local mmi, mma = math.min, math.max
local n, c = io.read("*n", "*n")
local x, y = {}, {}
local xm, ym = {}, {}
for i = 1, n do
  x[i], y[i] = io.read("*n", "*n")
  xm[x[i]], ym[y[i]] = true, true
end
local xuniq, yuniq = {}, {}
for k, v in pairs(xm) do
  table.insert(xuniq, k)
end
for k, v in pairs(ym) do
  table.insert(yuniq, k)
end
table.sort(xuniq)
table.sort(yuniq)
local jpos = 1
local xc, yc = #xuniq, #yuniq

local function solve(xl, xr, yl, yr)
  local z = 0
  for i = 1, n do
    if xl <= x[i] and x[i] <= xr
    and yl <= y[i] and y[i] <= yr then
      z = z + 1
    end
  end
  return c <= z
end
local ret = (xuniq[xc] - xuniq[1]) * (yuniq[yc] - yuniq[1])
for i = 1, xc do
  local ival = xuniq[i]
  for j = i, xc do
    local jval = xuniq[j]
    local lpos, lval = 1, yuniq[1]
    for k = 1, yc do
      local kval = yuniq[k]
      while not solve(ival, jval, kval, lval) do
        lpos = lpos + 1
        if yc < lpos then break end
        lval = yuniq[lpos]
      end
      if yc < lpos then break end
      ret = mmi(ret, (jval - ival) * (lval - kval))
    end
  end
end
print(ret)
