#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn = 52;
int G[maxn][maxn], n, xx[maxn], yy[maxn];
inline void init(int x){
for(int i=1; i<=n; ++i){
for(int j=1; j<=n; ++j)
G[i][j] = 0;
G[i][i] = 1;
}
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
if(abs(xx[i] - xx[j]) + abs(yy[i] - yy[j]) <= x << 1)
G[i][j] = 1;
}
inline void floyd(){
for(int k=1; k<=n; ++k)
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
if(G[i][k] && G[k][j])
G[i][j] = 1;
}
inline bool deal(int x){
init(x);
floyd();
int judge = 1;
for(int i=1; i<=n; i++) judge &= G[1][i];
return judge;
}
int main(void)
{
cin >> n;
for(int i=1; i<=n; ++i)
cin >> xx[i] >> yy[i];
int l = 1, r = 1000000000;
while(l < r){
int mid = (l + r) >> 1;
if(deal(mid)) r = mid;
else l = mid + 1;
}
cout << l << endl;
}