#include <bits/stdc++.h>
using namespace std;
typedef unsigned int ui;
typedef vector<int> VI;
typedef vector<VI> VVI;
#define REP(i, n) for(int(i)=0;(i)<(n);++(i))

int dfs(int b, VI &v){
    int n = v.size();
    if(n < 2 || b < 0) return 0;

    VI v0,v1;
    REP(i,n){
        if(v[i] & (1<<b)){
            v1.push_back(v[i] & ~(1<<b));
        } else {
            v0.push_back(v[i] & ~(1<<b));
        }
    }
    if(v0.size() == 0) return dfs(b-1, v1);
    if(v1.size() == 0) return dfs(b-1, v0);
    
    return (1<<b) | min(dfs(b-1, v0), dfs(b-1, v1));
}

int main(){
    int N; cin >> N;
    VI v;
    REP(i,N){
        int A; cin >> A;
        v.push_back(A);
    }
    cout << dfs(30,v) << endl;
}