#include <bits/stdc++.h>

using namespace std;


int getMinima(int *A, int L, int R, int b = 29)
{
	if (b == -1) return (0);

	int p = lower_bound(A + L, A + R + 1, 1 << b) - A;

	for (int i = L; i <= R; i++) A[i] &= (~(1 << b));

	if (p == L || p == R + 1) return (getMinima(A, L, R, b - 1));

	return ((1 << b) + min(getMinima(A, L, p - 1, b - 1), getMinima(A, p, R, b - 1)));
}

int main()
{
	int N;
	int A[100000];

	scanf("%d", &N);

	for (int i = 0; i < N; i++) scanf("%d", A + i);

	sort(A, A + N);

	printf("%d\n", getMinima(A, 0, N - 1));

	return (0);
}