#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int (i) = 0 ; (i) < (int)(n) ; (i)++)
#define REP(i,a,b) for(int (i) = a ; (int)(i) <= (int)(b) ; (i)++)
#define all(n) (n).begin(),(n).end()



int dfs(int bit,vector<int> a){
	if( bit == -1 ) return 0;
	if( a.size() == 0 ) return 0;
	

	vector<int> d[2];
	rep(i,a.size()) d[a[i] >> bit & 1].push_back(a[i]&~(1<<bit));
	
	if( d[0].size() && d[1].size() ){
		int one = dfs(bit-1,d[0]);
		int zer = dfs(bit-1,d[1]);
		return min(one,zer) + (1<<bit);
	}else if( d[0].size() == 0 ){
		return dfs(bit-1,d[1]);
	}else{
		return dfs(bit-1,d[0]);
	}
}
int main(){
	int n;
	cin >> n;
	vector<int> a(n);
	rep(i,n) cin >> a[i];
	cout << dfs(30,a) << endl;
}