from collections import deque n = int(input()) s, e = map(int, input().split()) stone = set(map(int, input().split())) stone.add(e) dist = {s:0} queue = deque() queue.append(s) while queue: pos = queue.popleft() for i in range(30): npos = pos ^ (1 << i) if npos not in dist and npos in stone: dist[npos] = dist[pos] + 1 queue.append(npos) print(dist.get(e, 0) - 1)