import java.lang.Math

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

    val points = Array(N) { val (x, y) = readInputLine().split(" ").map { it.toLong() }; Pair(x, y) }

    val (xs, ys) = points.unzip().let { Pair(it.first.sorted().toLongArray(),
                                             it.second.sorted().toLongArray()) }

    val pointsSumBase = Array(N) { IntArray(N) }

    for (p in points) {
        val xIndex = xs.indexOf(p.first)
        val yIndex = ys.indexOf(p.second)

        pointsSumBase[yIndex][xIndex]++
    }

    var ans = Long.MAX_VALUE

    for (xIndex in 0 until N) {
        for (yIndex in 0 until N) {
            val pointsSum = Array(N) { pointsSumBase[it].copyOf() }

            for (y in 0 until yIndex) {
                for (x in 0 until N) {
                    pointsSum[y][x] = 0
                }
            }

            for (y in 0 until N) {
                for (x in 0 until xIndex) {
                    pointsSum[y][x] = 0
                }
            }

            for (y in 0 until N) {
                for (x in 0 until N) {
                    if (x != 0) {
                        pointsSum[y][x] += pointsSum[y][x - 1]
                    }
                }
            }

            for (y in 0 until N) {
                for (x in 0 until N) {
                    if (y != 0) {
                        pointsSum[y][x] += pointsSum[y - 1][x]
                    }
                }
            }

            for (y in yIndex until N) {
                for (x in xIndex until N) {
                    if (pointsSum[y][x] >= K) {
                        ans = Math.min(ans, (ys[y] - ys[yIndex]) * (xs[x] - xs[xIndex]))
                        break
                    }
                }
            }
        }
    }

    println(ans)
}

fun readInputLine(): String {
    return readLine()!!
}
