#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
}a[1005];
bool cmp(node x,node y)
{
if(x.x<y.x)
{
return 1;
}
else if(x.x>y.x)
{
return 0;
}
else
{
return x.y<=y.y;
}
}
int s[1005][1005],d[1005][1005];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i].x>>a[i].y;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
int f=0;
for(int k=i;k<=j-1;k++)
{
if(a[j].x>=a[k].x&&a[j].y>=a[k].y)
f=max(f,s[i][k]+1);
}
if(i==j)
{
s[i][j]=1;
continue;
}
else
s[i][j]=f;
}
}
int maxn=-1e9,q,w;
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
if(abs(a[j].x-a[i].x)+abs(a[j].y-a[i].y)+1-s[i][j]<=m&&a[i].x-a[j].x<=0&&a[i].y-a[j].y<=0)
{
maxn=max({maxn,abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)+1,s[i][j]+m});
}
}
}
cout<<maxn;
return 0;
}