#include <bits/stdc++.h>
using namespace std;
int n,k,ans=INT_MAX,sum;
struct ju{
int x1,y1,x2,y2;
bool use;
}b[6];
struct ju1{
int x,y;
}a[51];
int S(ju x){
if(!x.use)return 0;
else return (x.x2-x.x1)*(x.y1-x.y2);
}
void maxx(int x,int y,ju &k){
if(!k.use){
k.x1=k.x2=x;
k.y1=k.y2=y;
k.use=1;
}else{
if(x<k.x1)k.x1=x;
else if(x>k.x2)k.x2=x;
if(y>k.y1)k.y1=y;
else if(y<k.y2)k.y2=y;
}
}
bool ko(int x,int y,ju k){
return k.x1<=x&&x<=k.x2&&k.y2<=y&&y<=k.y1;
}
bool K(ju x,ju y){
if(!x.use||!y.use)return 0;
return ko(y.x1,y.y1,x)||ko(y.x2,y.y2,x)||ko(y.x1,y.y2,x)||ko(y.x2,y.y1,x);
}
bool ok(){
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(K(b[i],b[j]))return 0;
}
}
return 1;
}
void DFS(int t,int s){
if(s>=ans)return ;
if(t==n){
if(ok())
if(s<ans)ans=s;
return;
}
ju q;
for(int i=1;i<=k;i++){
q=b[i];
maxx(a[t].x,a[t].y,b[i]);
DFS(t+1,s-S(q)+S(b[i]));
b[i]=q;
}
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i].x>>a[i].y;
}
DFS(0,0);
cout<<ans;
}