#include<bits/stdc++.h>
using namespace std;
int n,k,x[51],y[51],ans=INT_MAX;
struct node{
int x1,y1,x2,y2;
bool us;
bool In(int aa,int bb){
if(aa>=x1&&bb>=y1&&aa<=x2&&bb<=y2)return 1;
else return 0;
}
void Add(int a,int b){
if(!us){
x1=x2=a;
y1=y2=b;
us=1;
}
else{
x1=min(x1,a);
x2=max(x2,a);
y1=min(y1,b);
y2=max(y2,b);
}
}
}g[5],t;
bool not_cross(node a,node b){
if(!a.us||!b.us)return 1;
if(a.In(b.x1,b.y2)||a.In(b.x2,b.y1)||a.In(b.x1,b.y1)||a.In(b.x2,b.y2))return 0;
if(b.In(a.x1,a.y2)||b.In(a.x2,a.y1)||b.In(a.x1,a.y1)||b.In(a.x2,a.y2))return 0;
return 1;
}
bool pd(){
for(int i=1;i<k;i++)
for(int j=i+1;j<=k;j++)
if(i!=j&&!not_cross(g[i],g[j]))return 0;
return 1;
}
int js(node a){
if(!a.us)return 0;
else return (a.x2-a.x1)*(a.y2-a.y1);
}
void dfs(int now,int s){
for(int i=1;i<=k;i++)
cout<<i<<" "<<g[i].x1<<" "<<g[i].y1<<" "<<g[i].x2<<" "<<g[i].y2<<endl;
if(s>=ans)return;
if(now>n){
if(pd())ans=min(ans,s);
return;
}
for(int i=1;i<=k;i++){
t=g[i];
g[i].Add(x[now],y[now]);
dfs(now+1,s+js(g[i])-js(t));
g[i]=t;
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>x[i]>>y[i];
dfs(1,0);
cout<<ans;
return 0;
}