import java.io.{BufferedReader, IOException, InputStream, InputStreamReader}
import java.util.StringTokenizer

import scala.collection.mutable
import scala.util.Sorting
import math.{min, max, abs}

object Main {
  def solve(): Unit = {
    val sc = new InputReader(System.in)
    val N = sc.nextInt()
    val K = sc.nextInt()

    val x = Array.ofDim[Long](N)
    val y = Array.ofDim[Long](N)
    (0 until N) foreach { i =>
      x(i) = sc.nextLong()
      y(i) = sc.nextLong()
    }

    var ans = Long.MaxValue
    for {
      x0 <- x.indices
      x1 <- x.indices
      y0 <- y.indices
      y1 <- y.indices
    } {
      val min_x = min(x(x0), x(x1))
      val max_x = max(x(x0), x(x1))
      val min_y = min(y(y0), y(y1))
      val max_y = max(y(y0), y(y1))
      val k = (0 until N) count { i =>
        min_x <= x(i) && x(i) <= max_x && min_y <= y(i) && y(i) <= max_y
      }
      if (k >= K) ans = min(ans, (max_x - min_x) * (max_y - min_y))
    }

    println(ans)
  }

  def main(args: Array[String]): Unit = {
    solve()
  }

  class InputReader(val stream: InputStream) {
    val reader = new BufferedReader(new InputStreamReader(stream), 32768)
    var tokenizer: StringTokenizer = null

    def next: String = {
      while (tokenizer == null || !tokenizer.hasMoreTokens)
        tokenizer = new StringTokenizer(reader.readLine)
      tokenizer.nextToken
    }

    def nextInt(): Int = next.toInt
    def nextLong(): Long = next.toLong
    def nextChar(): Char = next.charAt(0)
  }

}
