#include <bits/stdc++.h>
using namespace std;
const long long mod = (1e9 + 7);
const int maxn = 1e5 + 5;
vector<int> st[30 * maxn];
int tot = 1;
int borracho(int l, int nod) {
  int I, D;
  if (l < 0 || st[nod].size() == 0) return 0;
  I = tot + 1;
  D = tot + 2;
  tot += 2;
  for (auto x : st[nod]) {
    if (!((1 << l) & x))
      st[I].push_back(x);
    else
      st[D].push_back(x);
  }
  int P = 1;
  for (int i = 1; i <= l; i++) P *= 2;
  if (!st[I].size()) return borracho(l - 1, D);
  if (!st[D].size()) return borracho(l - 1, I);
  if (st[I].size() && st[D].size())
    return min(P + borracho(l - 1, I), P + borracho(l - 1, D));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int a;
    cin >> a;
    st[1].push_back(a);
  }
  cout << borracho(29, 1);
  return 0;
}
