# https://yukicoder.me/problems/no/1219 from collections import deque def main(): N = int(input()) A = list(map(int, input().split())) def dfs(a_array, k): if len(a_array) == 0: return 0 if k < 0: return 0 count = [[], []] for a in a_array: if (1 << k) & a > 0: count[1].append(a) else: count[0].append(a) if len(count[0]) > 0 and len(count[1]) > 0: answer = 1 << k ans0 = dfs(count[0], k - 1) ans1 = dfs(count[1], k - 1) answer += min(ans0, ans1) elif len(count[0]) > 0: answer = dfs(count[0], k - 1) elif len(count[1]) > 0: answer = dfs(count[1], k - 1) return answer max_a = max(A) k = 0 while max_a > 0: k += 1 max_a //= 2 k += 1 answer = dfs(A, k) print(answer) if __name__ == "__main__": main()