output_description: Print the minimum possible area of a rectangle that satisfies the condition.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N K  
      x_1 y_1
      :  
      x_{N} y_{N}
attempt: # https://atcoder.jp/contests/abc075/tasks/abc075_d
  # 座標圧縮して二次元累積和に打ち込めば良さそう
  
  # はじめての座圧...?
  
  import sys
  
  read = sys.stdin.readline
  
  
  def read_ints():
      return list(map(int, read().split()))
  
  
  def read_col(H, n_cols):
      """
      H is number of rows
      n_cols is number of cols
      A列、B列が与えられるようなとき
      """
      ret = [[] for _ in range(n_cols)]
      for _ in range(H):
          tmp = list(map(int, read().split()))
          for col in range(n_cols):
              ret[col].append(tmp[col])
      return ret
  
  
  class cumsum2d:  # 二次元累積和クラス pypyでも使えるよ
      def __init__(self, ls: list):
          """
          2次元のリストを受け取る
          """
          from itertools import product
  
          H = len(ls)
          W = len(ls[0])
          self.ls_accum = [[0] * (W + 1)]
          for l in ls:
              self.ls_accum.append([0] + l)
  
          # 縦に累積
          for i, j in product(range(1, H + 1), range(1, W + 1)):
              self.ls_accum[i][j] += self.ls_accum[i - 1][j]
          # 横に累積
          for i, j in product(range(1, H + 1), range(1, W + 1)):
              self.ls_accum[i][j] += self.ls_accum[i][j - 1]
  
      def total(self, i1, j1, i2, j2):
          """
          点(i1,j1),(i1,j2),(i2,j1),(i2,j2)の4点が成す四角の中の合計を取り出す
          ただし i1<=i2, j1<=j2
          ただし、i軸に関しては[i1,i2),j軸に関しては[j1,j2)の半開区間である
          """
          return (
              self.ls_accum[i2][j2]
              - self.ls_accum[i1][j2]
              - self.ls_accum[i2][j1]
              + self.ls_accum[i1][j1]
          )
  
  
  class ZaAtu:
      def __init__(self, ls):
          # 座標圧縮クラス(仮) #どうしたら使いやすくなるのか知らんけど
          self.i_to_orig = sorted(set(ls))
          self.orig_to_i = {}
          for i, zahyou in enumerate(self.i_to_orig):
              self.orig_to_i[zahyou] = i
          self.len = len(self.i_to_orig)
  
      def __len__(self):
          return len(self.i_to_orig)
  
  
  from itertools import product
  
  N, K = read_ints()
  X_ori, Y_ori = read_col(N, 2)
  X = ZaAtu(X_ori)
  Y = ZaAtu(Y_ori)
  table = [[0] * Y.len for _ in range(X.len)]  # 二次元累積和を作る
  for x, y in zip(X_ori, Y_ori):
      i = X.orig_to_i[x]
      j = Y.orig_to_i[y]
      table[i][j] += 1
  
  table = cumsum2d(table)
  # 怒りの全探索
  ans = (2 * 10**9) ** 2 + 114514
  for i, j in product(range(X.len), range(Y.len)):  # 始点
      for ii, jj in product(range(i, X.len + 1), range(j, Y.len + 1)):  # 終点
          if table.total(i, j, ii, jj) >= K:
              S = (X.i_to_orig[ii - 1] - X.i_to_orig[i]) * (
                  Y.i_to_orig[jj - 1] - Y.i_to_orig[j]
              )
              ans = min(ans, S)
  print(ans)
  
problem_description: Statement
  
  We have N points in a two-dimensional plane.  
  The coordinates of the i-th point (1 \leq i \leq N) are (x_i,y_i).  
  Let us consider a rectangle whose sides are parallel to the coordinate axes
  that contains K or more of the N points in its interior.  
  Here, points on the sides of the rectangle are considered to be in the
  interior.  
  Find the minimum possible area of such a rectangle.
samples: [{"input": "4 4\n    1 4\n    3 3\n    6 2\n    8 1", "output": "21\n    \n\nOne rectangle that satisfies the condition with the minimum possible area has\nthe following vertices: (1,1), (8,1), (1,4) and (8,4).  \nIts area is (8-1) \u00d7 (4-1) = 21.\n\n* * *"}, {"input": "4 2\n    0 0\n    1 1\n    2 2\n    3 3", "output": "1\n    \n\n* * *"}, {"input": "4 3\n    -1000000000 -1000000000\n    1000000000 1000000000\n    -999999999 999999999\n    999999999 -999999999", "output": "3999999996000000001\n    \n\nWatch out for integer overflows."}]