from collections import deque N = int(input()) A = [0]*(N+2) a,b = map(int,input().split()) A[0] = a A[N+1] = b A[1:N+1] = map(int,input().split()) def dh(x,y): cnt = 0 for k in range(30+1): if (x>>k)&1!=(y>>k)&1: cnt += 1 return cnt G = {i:[] for i in range(N+2)} for i in range(N+1): for j in range(i+1,N+2): if dh(A[i],A[j])<=1: G[i].append(j) G[j].append(i) dist = [-1]*(N+2) dist[0] = 0 que = deque([0]) while que: x = que.popleft() for y in G[x]: if dist[y]==-1: dist[y] = dist[x]+1 que.append(y) if dist[N+1]<0: print(-1) else: print(dist[N+1]-1)