← Home
package main

import (
	"fmt"
	"io"
	"os"
	"sort"
)

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int {
		for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
			idx++
		}
		val := 0
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int(data[idx]-'0')
			idx++
		}
		return val
	}

	n := nextInt()
	a := make([]int, n)
	for i := 0; i < n; i++ {
		a[i] = nextInt()
	}
	sort.Ints(a)

	var dfs func(int, int, int) int
	dfs = func(l, r, bit int) int {
		if r-l <= 1 || bit < 0 {
			return 0
		}
		m := l
		mask := 1 << bit
		for m < r && (a[m]&mask) == 0 {
			m++
		}
		if m == l || m == r {
			return dfs(l, r, bit-1)
		}
		x := dfs(l, m, bit-1)
		y := dfs(m, r, bit-1)
		if x < y {
			return mask + x
		}
		return mask + y
	}

	fmt.Print(dfs(0, n, 29))
}