#include <bits/stdc++.h>
#define el "\n"
#define int long long
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second
#define sz(x) ((int)(x).size())
#define all(v) (v).begin(), (v).end()
#define pb push_back
#define prs(n) fixed << setprecision(n)
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
inline int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
inline int lcm(int a, int b) { return a / gcd(a, b) * b; }
using namespace std;
int n;
int par[N];
pair<int, int> a[N];
int find (int u) {
if (u == par[u]) return u;
return par[u] = find(par[u]);
}
bool join (int u, int v) {
u = find(u);
v = find(v);
if (u == v) return false;
par[u] = v;
return true;
}
int dist (int i, int j) {
int dx = a[i].fi - a[j].fi;
int dy = a[i].se - a[j].se;
return dx * dx + dy * dy;
}
bool cmpX (tuple<int, int, int> a, tuple<int, int, int> b) {
return get<0>(a) < get<0>(b);
}
bool cmpY (tuple<int, int, int> a, tuple<int, int, int> b) {
return get<1>(a) < get<1>(b);
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("test.inp", "r", stdin);
freopen("test.out", "w", stdout);
#endif
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i].fi >> a[i].se;
par[i] = i;
}
// vector<tuple<int, int, int>> points;
// for (int i = 0; i < n; i++)
// points.pb({a[i].fi, a[i].se, i});
vector<tuple<int, int, int>> edges;
// sort(all(points), cmpX);
// for (int i = 1; i < n; i++) {
// int u = get<2>(points[i - 1]);
// int v = get<2>(points[i]);
// edges.pb({dist(u, v), u, v});
// }
// sort(all(points), cmpY);
// for (int i = 1; i < n; i++) {
// int u = get<2>(points[i - 1]);
// int v = get<2>(points[i]);
// edges.pb({dist(u, v), u, v});
// }
for (int type = 0; type < 4; ++type) {
vector<tuple<int,int,int>> points;
for (int i = 0; i < n; i++) {
int f;
if (type == 0) f = a[i].fi; // x
if (type == 1) f = a[i].se; // y
if (type == 2) f = a[i].fi + a[i].se; // x + y
if (type == 3) f = a[i].fi - a[i].se; // x - y
points.pb({f, i, 0});
}
sort(all(points));
for (int i = 1; i < n; i++) {
int u = get<1>(points[i - 1]);
int v = get<1>(points[i]);
edges.pb({dist(u, v), u, v});
}
}
sort(all(edges));
int res = 0, nodes = 0;
for (auto [w, u, v] : edges) {
if (join(u, v)) {
res += w;
nodes++;
if (nodes == n - 1) break;
}
}
cout << res << el;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZWwgIlxuIgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzeih4KSAoKGludCkoeCkuc2l6ZSgpKQojZGVmaW5lIGFsbCh2KSAodikuYmVnaW4oKSwgKHYpLmVuZCgpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcHJzKG4pIGZpeGVkIDw8IHNldHByZWNpc2lvbihuKQoKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBOID0gMWU1ICsgNTsKCmlubGluZSBpbnQgZ2NkKGludCBhLCBpbnQgYikgewogIGlmIChiID09IDApIHJldHVybiBhOwogIHJldHVybiBnY2QoYiwgYSAlIGIpOwp9CmlubGluZSBpbnQgbGNtKGludCBhLCBpbnQgYikgeyByZXR1cm4gYSAvIGdjZChhLCBiKSAqIGI7IH0KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbjsKaW50IHBhcltOXTsKcGFpcjxpbnQsIGludD4gYVtOXTsKCmludCBmaW5kIChpbnQgdSkgewogIGlmICh1ID09IHBhclt1XSkgcmV0dXJuIHU7CiAgcmV0dXJuIHBhclt1XSA9IGZpbmQocGFyW3VdKTsKfQoKYm9vbCBqb2luIChpbnQgdSwgaW50IHYpIHsKICB1ID0gZmluZCh1KTsKICB2ID0gZmluZCh2KTsKICBpZiAodSA9PSB2KSByZXR1cm4gZmFsc2U7CiAgcGFyW3VdID0gdjsKICByZXR1cm4gdHJ1ZTsKfQoKaW50IGRpc3QgKGludCBpLCBpbnQgaikgewogIGludCBkeCA9IGFbaV0uZmkgLSBhW2pdLmZpOwogIGludCBkeSA9IGFbaV0uc2UgLSBhW2pdLnNlOwogIHJldHVybiBkeCAqIGR4ICsgZHkgKiBkeTsKfQoKYm9vbCBjbXBYICh0dXBsZTxpbnQsIGludCwgaW50PiBhLCB0dXBsZTxpbnQsIGludCwgaW50PiBiKSB7CiAgcmV0dXJuIGdldDwwPihhKSA8IGdldDwwPihiKTsgIAp9Cgpib29sIGNtcFkgKHR1cGxlPGludCwgaW50LCBpbnQ+IGEsIHR1cGxlPGludCwgaW50LCBpbnQ+IGIpIHsKICByZXR1cm4gZ2V0PDE+KGEpIDwgZ2V0PDE+KGIpOyAgCn0KCnNpZ25lZCBtYWluKCkgewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogIGNpbi50aWUoMCk7CiAgY291dC50aWUoMCk7CgojaWZuZGVmIE9OTElORV9KVURHRQogIGZyZW9wZW4oInRlc3QuaW5wIiwgInIiLCBzdGRpbik7CiAgZnJlb3BlbigidGVzdC5vdXQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgoKICBjaW4gPj4gbjsKICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgY2luID4+IGFbaV0uZmkgPj4gYVtpXS5zZTsKICAgIHBhcltpXSA9IGk7CiAgfQoKICAvLyB2ZWN0b3I8dHVwbGU8aW50LCBpbnQsIGludD4+IHBvaW50czsKICAvLyBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAvLyAgIHBvaW50cy5wYih7YVtpXS5maSwgYVtpXS5zZSwgaX0pOwoKICB2ZWN0b3I8dHVwbGU8aW50LCBpbnQsIGludD4+IGVkZ2VzOwogIC8vIHNvcnQoYWxsKHBvaW50cyksIGNtcFgpOwogIC8vIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgLy8gICBpbnQgdSA9IGdldDwyPihwb2ludHNbaSAtIDFdKTsKICAvLyAgIGludCB2ID0gZ2V0PDI+KHBvaW50c1tpXSk7CiAgLy8gICBlZGdlcy5wYih7ZGlzdCh1LCB2KSwgdSwgdn0pOwogIC8vIH0KCiAgLy8gc29ydChhbGwocG9pbnRzKSwgY21wWSk7CiAgLy8gZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspIHsKICAvLyAgIGludCB1ID0gZ2V0PDI+KHBvaW50c1tpIC0gMV0pOwogIC8vICAgaW50IHYgPSBnZXQ8Mj4ocG9pbnRzW2ldKTsKICAvLyAgIGVkZ2VzLnBiKHtkaXN0KHUsIHYpLCB1LCB2fSk7CiAgLy8gfQoKICBmb3IgKGludCB0eXBlID0gMDsgdHlwZSA8IDQ7ICsrdHlwZSkgewogICAgdmVjdG9yPHR1cGxlPGludCxpbnQsaW50Pj4gcG9pbnRzOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgaW50IGY7CiAgICAgIGlmICh0eXBlID09IDApIGYgPSBhW2ldLmZpOyAvLyB4CiAgICAgIGlmICh0eXBlID09IDEpIGYgPSBhW2ldLnNlOyAvLyB5CiAgICAgIGlmICh0eXBlID09IDIpIGYgPSBhW2ldLmZpICsgYVtpXS5zZTsgLy8geCArIHkKICAgICAgaWYgKHR5cGUgPT0gMykgZiA9IGFbaV0uZmkgLSBhW2ldLnNlOyAvLyB4IC0geQogICAgICBwb2ludHMucGIoe2YsIGksIDB9KTsgCiAgICB9CiAgICBzb3J0KGFsbChwb2ludHMpKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgIGludCB1ID0gZ2V0PDE+KHBvaW50c1tpIC0gMV0pOwogICAgICBpbnQgdiA9IGdldDwxPihwb2ludHNbaV0pOwogICAgICBlZGdlcy5wYih7ZGlzdCh1LCB2KSwgdSwgdn0pOwogICAgfQogIH0KCiAgc29ydChhbGwoZWRnZXMpKTsKICBpbnQgcmVzID0gMCwgbm9kZXMgPSAwOwogIGZvciAoYXV0byBbdywgdSwgdl0gOiBlZGdlcykgewogICAgaWYgKGpvaW4odSwgdikpIHsKICAgICAgcmVzICs9IHc7CiAgICAgIG5vZGVzKys7CiAgICAgIGlmIChub2RlcyA9PSBuIC0gMSkgYnJlYWs7CiAgICB9CiAgfQoKICBjb3V0IDw8IHJlcyA8PCBlbDsKCiAgcmV0dXJuIDA7Cn0K