program main
  implicit none
  integer(8) :: n, k, i, i1, i2, j1, j2, x1, x2, y1, y2, res, cnt
  integer(8), allocatable :: x(:), y(:), xs(:), ys(:)
  read *, n, k
  allocate (x(n), y(n))
  do i = 1, n
    read *, x(i), y(i)
  end do
  xs = x
  ys = y
  call quicksort(xs)
  call quicksort(ys)
  res = 4 * 10_8 ** 18
  do i1 = 1, n
    do i2 = i1 + 1, n
      do j1 = 1, n
        do j2 = j1 + 1, n
          x1 = xs(i1)
          x2 = xs(i2)
          y1 = ys(j1)
          y2 = ys(j2)
          cnt = 0
          do i = 1, n
            if ((x1 <= x(i) .and. x(i) <= x2) .and. (y1 <= y(i) .and. y(i) <= y2)) cnt = cnt + 1
          end do
          if (cnt >= k) then
            res = min(res, (x2 - x1) * (y2 - y1))
          end if
        end do
      end do
    end do
  end do
  print "(i0)", res

  contains

  recursive subroutine quicksort(a)
    integer(8), intent(inout) :: a(:)
    integer(8) :: pivot, i, j, k, tmp, n
    real(4) :: r
    n = size(a)
    if (n <= 1) return
    i = 1
    j = n
    call random_number(r)
    k = 1 + floor(r * n)
    k = max(1, min(k, n))
    pivot = a(k)
    do
      do while (.not. pivot <= a(i))
        i = i + 1
      end do
      do while (.not. a(j) <= pivot)
        j = j - 1
      end do
      if (i >= j) exit
      tmp = a(i)
      a(i) = a(j)
      a(j) = tmp
      i = i + 1
      j = j - 1
    end do
    call quicksort(a(1:i - 1))
    call quicksort(a(j + 1:n))
  end subroutine quicksort
end program main
