#include 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); }