import sys sys.setrecursionlimit(10**6) def dfs(d, group): if d==L: return 0 zero_group, one_group = [], [] for b in group: if b[d]=='0': zero_group.append(b) else: one_group.append(b) if len(zero_group)==0: return dfs(d+1, one_group) elif len(one_group)==0: return dfs(d+1, zero_group) else: return min(dfs(d+1, zero_group)+2**(L-d-1), dfs(d+1, one_group)+2**(L-d-1)) N = int(input()) a = list(map(int, input().split())) a = [format(ai, 'b') for ai in a] L = max(len(ai) for ai in a) a = ['0'*(L-len(ai))+ai for ai in a] print(dfs(0, a))