#include<bits/stdc++.h>
using namespace std;
struct point{
int x,y;
bool operator<(point o) const{
if(x==o.x)
return y<o.y;
return x<o.x;
}
}a[505];
int n,k,f[505][105],ans=0;
inline int getk(point x,point y){
return abs(y.x-x.x)+abs(y.y-x.y)-1;
}
signed main(){
memset(f,0,sizeof(f));
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
f[i][k]=1;
for(int t=0;t<=k;t++)
for(int j=1;j<i;j++){
if(a[j].x>a[i].x||a[j].y>a[i].y)
continue;
int d=getk(a[i],a[j]);
if(t+d<=k)
f[i][t]=max(f[i][t],f[j][t+d]+d);
}
}
for(int i=1;i<=n;i++)
for(int j=0;j<=k;j++)
ans=max(ans,f[i][j]+j);
printf("%d",ans);
return 0;
}