#include <bits/stdc++.h>
using namespace std;
mt19937 rng32(chrono::steady_clock::now().time_since_epoch().count());
long long inf = 1e18, MOD = 1e9 + 7;
long long n, m, k, ar[1000005], br[1000005];
string s, s1;
map<vector<long long>, long long> ma;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int ti = 1;
  while (ti--) {
    cin >> n;
    for (long long i = 0; i < n; i++) cin >> ar[i];
    for (long long mask = 0; mask < (1 << 15); mask++) {
      vector<long long> temp(n, 0), p;
      for (long long i = 0; i < n; i++) {
        for (long long j = 0; j < 15; j++) {
          if ((mask & (1 << j) && (!(ar[i] & (1 << j)))) ||
              (!(mask & (1 << j)) && (ar[i] & (1 << j))))
            temp[i]++;
        }
      }
      for (long long i = 1; i < n; i++) p.push_back(temp[i] - temp[0]);
      ma[p] = mask;
    }
    for (long long mas = 0; mas < (1 << 15); mas++) {
      long long mask = (mas << 15);
      vector<long long> temp(n, 0), p;
      for (long long i = 0; i < n; i++) {
        for (long long j = 15; j < 30; j++) {
          if ((mask & (1 << j) && (!(ar[i] & (1 << j)))) ||
              (!(mask & (1 << j)) && (ar[i] & (1 << j))))
            temp[i]++;
        }
      }
      for (long long i = 1; i < n; i++) p.push_back(temp[0] - temp[i]);
      if (ma.find(p) != ma.end()) {
        cout << (mask ^ ma[p]) << endl;
        return 0;
      }
    }
    cout << "-1" << endl;
  }
  return 0;
}
