fun main(arg: Array<String>) {
    val (N, K) = listOfInt()
    val XY = Array(N) { listOfLong() }
    val X = XY.map { it[0] }.sorted().toLongArray()
    val Y = XY.map { it[1] }.sorted().toLongArray()
    var ans = (X.last() - X.first()) * (Y.last() - Y.first())
    for (xi in 0 until N) for (xj in xi + 1 until N)
        for (yi in 0 until N) for (yj in yi + 1 until N) {
            var count = 0
            val lx = X[xi]
            val rx = X[xj]
            val by = Y[yi]
            val uy = Y[yj]
            for (i in 0 until N) {
                if (lx <= XY[i][0] && XY[i][0] <= rx && by <= XY[i][1] && XY[i][1] <= uy) count += 1
            }
            if (count >= K) ans = Math.min(ans, (rx - lx) * (uy - by))
        }
    println(ans)
}

fun next() = readLine()!!
fun nextInt(delta: Int = 0) = Integer.parseInt(next()) + delta
fun listOfString() = next().split(" ")
fun listOfInt(d: Int = 0) = listOfString().map { Integer.parseInt(it) + d }
fun listOfLong() = listOfString().map(String::toLong)
fun listOfDouble() = listOfString().map { it.toDouble() }
