{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE BangPatterns #-}

import Control.Applicative
import Control.Monad
import Control.Arrow
import Data.List
import Data.Maybe
import Data.Char
import qualified Data.ByteString.Char8 as B
import Text.Printf

readInt = ( readLn :: IO Int )
readInts = map ( read :: String -> Int ) . words <$> getLine

getList = map ( fst . fromJust . B.readInt ) . B.words <$> B.getLine

which a b f = if f then a else b
mp [ a, b ] = ( a, b )

main = do
	[ n, k ] <- readInts
	points <- replicateM n $ do
		[ x, y ] :: [ Integer ] <- map read . words <$> getLine
		return ( x, y )
	let
		xs = map fst points
		ys = map snd points
	print $ minimum $ [ ( x2 - x1 ) * ( y2 - y1 ) | x1 <- xs, x2 <- xs, y1 <- ys, y2 <- ys, x1 <= x2, y1 <= y2, k <= solve x1 y1 x2 y2 points ]

solve x1 y1 x2 y2 = length . filter ( \( x, y ) -> x1 <= x && x <= x2 && y1 <= y && y <= y2 )
