import Control.Monad

main :: IO ()
main = do
    [n, k] <- map read . words <$> getLine :: IO [Integer]
    pos <- replicateM (fromIntegral n) ((\[a,b]->(a,b)) . map read . words <$> getLine) :: IO [(Integer, Integer)]
    ns <- concat <$> mapM (innerPoints pos k) [(p, p',p'')| p<-pos, p'<-pos, p''<-pos]
    print . minimum $ ns

innerPoints :: [(Integer, Integer)] 
            -> Integer
            -> ((Integer,Integer), (Integer,Integer), (Integer,Integer))
            -> IO [Integer]
innerPoints pos k ((x,y), (x', y'),(x'', y'')) = let
    isInner (x''', y''') =  minimum [x,x',x''] <= x''' && x''' <= maximum [x,x',x'']
                         && minimum [y,y',y''] <= y''' && y''' <= maximum [y,y',y'']
    innerP = sum . map (\b->if b then 1 else 0) $ map isInner pos
    in return [(maximum [x,x',x'']-minimum [x,x',x'']) * (maximum [y,y',y''] - minimum [y,y',y'']) | innerP >= k]

