import Control.Applicative
import Data.List
import Data.Ord

listToTuple2 [a,b] = (a,b)

main = do
  (n,k) <- listToTuple2 . map read . words <$> getLine :: IO (Int,Int)
  ps <- map (listToTuple2 . map read . words) . lines <$> getContents :: IO [(Integer,Integer)]

  let px = nub $ sort $ map fst ps

  print $ minimum . map area . concat $ (flip map) (filter ((>=k) . length) [filter (\(x,_) -> x>=x1 && x<=x2) ps | x1<-px, x2<-px, x1<=x2]) $
    \pps ->
      let
        py = nub $ sort $ map snd pps
      in
        filter ((>=k) . length) [filter (\(_,y) -> y>=y1 && y<=y2) pps | y1<-py, y2<-py, y1<=y2]

  where
    area ps = (maxx - minx) * (maxy - miny)
      where
        xs = map fst ps
        ys = map snd ps
        minx = minimum xs
        maxx = maximum xs
        miny = minimum ys
        maxy = maximum ys
