import java.util.*

fun main(args: Array<String>) {
    val (N, K) = readLine()!!.split(" ").map{ it.toInt()}
    val ps = Array(N) { readLine()!!.split(" ").map { it.toLong() } }

    val xs = TreeSet(ps.map { it[0] }).toTypedArray()
    val ys = TreeSet(ps.map { it[1] }).toTypedArray()

    val f = Array(xs.size + 2) { Array(ys.size + 2) {0} }

    for (p in ps) {
        val xi = xs.binarySearch(p[0]) + 1
        val yi = ys.binarySearch(p[1]) + 1

        f[xi][yi]++
    }

    for (i in 1 until xs.size + 2) for (j in 1 until ys.size + 2) {
        f[i][j] += f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1]
    }

    var res = (1e19).toLong()

    for (i in 1..xs.size) for (j in i .. xs.size) for(k in 1 .. ys.size) for(l in k .. ys.size) {
        val c = f[j][l] - f[j][k - 1] - f[i - 1][l] + f[i - 1][k - 1]
        if (c < K) continue

        res = Math.min(res, (xs[j - 1] - xs[i - 1]) * (ys[l - 1] - ys[k - 1]))
    }

    println(res)
}
