#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node
{
int x,y,idx,idy;
}a[114514];
struct node1
{
int x,y;
}c[114][514];
int n,K;
int cnt,b[114514],vis[114][514],ans=LONG_LONG_MAX,maxx,maxy;
signed main()
{
cin>>n>>K;
for(int i=1;i<=n;i++)
cin>>a[i].x>>a[i].y,b[++cnt]=a[i].x,b[++cnt]=a[i].y;
sort(1+b,1+b+cnt);
int sum=unique(b+1,b+1+cnt)-b;
for(int i=1;i<=n;i++)
{
a[i].idx=lower_bound(b+1,b+1+sum,a[i].x)-b;
a[i].idy=lower_bound(b+1,b+1+sum,a[i].y)-b;
c[a[i].idx][a[i].idy].x=a[i].x,c[a[i].idx][a[i].idy].y=a[i].y;
vis[a[i].idx][a[i].idy]=1;
maxx=max(maxx,a[i].idx),maxy=max(maxy,a[i].idy);
}
for(int i=0;i<=maxx;i++) //位置
for(int j=0;j<=maxy;j++)
{
int maxxx=0,maxyy=0,miny=INT_MAX,minx=INT_MAX,sum=0;
for(int k=1;k<=maxx-i+1;k++) //长宽
for(int l=1;l<=maxy-j+1;l++)
{
if(vis[i+k-1][j+l-1])
{
maxxx=max(maxxx,c[i+k-1][j+l-1].x);
maxyy=max(maxyy,c[i+k-1][j+l-1].y);
minx=min(minx,c[i+k-1][j+l-1].x);
miny=min(miny,c[i+k-1][j+l-1].y);
sum++;
}
if(sum==K)
ans=min(ans,(maxxx-minx)*(maxyy-miny));
}
}
// for(int i=1;i<=maxx;i++)
// {
// for(int j=1;j<=maxy;j++)
// cout<<c[i][j].x<<","<<c[i][j].y<<" ";
//// cout<<vis[i][j]<<' ';
// cout<<endl;
// }
cout<<ans;
}