P1016

#include <bits/stdc++.h>

typedef long long i64;
const int N = 5010, inf = 0x3f3f3f3f;
int n;
int t[N], b[N];
int est[N];
bool vis[N];

i64 prim(void) {
    i64 ans = 0;
    for (int i = 1; i <= n; ++ i) {
        est[i] = -1;
        vis[i] = false;
    }
    est[1] = 0;
    for (int i = 1; i <= n; ++ i) {
        int maxn = -1, id = -1;
        for (int j = 1; j <= n; ++ j) {
            if (!vis[j]) {
                if (maxn < est[j]) {
                    maxn = est[j];
                    id = j;
                }
            }
        }
        if (id == -1) {
            puts("Something was wrong.");
            exit(0);
        }
        ans += maxn;
        vis[id] = true;
        for (int j = 1; j <= n; ++ j) {
            est[j] = std::max(est[j], std::min(t[id] xor b[j], b[id] xor t[j]));
        }
    }

    return ans;
}

int main(void) {

    scanf("%d", &n);
    for (int i = 1; i <= n; ++ i) {
        scanf("%d%d", &t[i], &b[i]);
    }
    printf("%lld\n", prim());

    return 0;
}