#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
int n;
struct node {
long long x, y;
} a[500100], b[500100];
bool cmp(node x, node y) {
return x.x < y.x;
}
bool cmp2(node x,node y){
return x.y<y.y;
}
double lenab(node x, node y) {
return abs(x.x - y.x) + abs(x.y - y.y) ;
}
vector<node> pai;
double solve(int l, int r) {
if (l >= r) {
return 1e18;
}
if (r - l + 1 == 2) {
if (a[l].y > a[r].y) {
swap(a[l], a[r]);
}
return lenab(a[l], a[r]);
}
long long mid = (l + r) >> 1;
long long mid_x = a[mid].x;
double ans = min(solve(l, mid), solve(mid + 1, r));
inplace_merge(a+l,a+mid+1,a+r+1,cmp2);
pai.clear();
for (size_t idx = l; idx <= r; idx++) {
if (fabs((double)a[idx].x - mid_x) <= ans) {
pai.push_back(a[idx]);
}
}
size_t sz = pai.size();
for (size_t i = 0; i < sz; i++) {
for (size_t j = i + 1; j < sz; j++) {
if ((double)(pai[j].y - pai[i].y) > ans)
break;
ans = min(ans, lenab(pai[i], pai[j]));
}
}
return ans;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].x >> a[i].y;
}
sort(a+1, a+n+1, cmp);
printf("%.0lf\n", solve(1, n));
return 0;
}