from collections import deque def BFS(s,N): dist=[False]*N que=deque([0]) dist[0]=0 while que: v=que.popleft() for u in graph[v]: if not dist[u]: dist[u]=dist[v]+1 que.append(u) return dist[-1] def hamming(a,b): x=bin(a^b) d=0 for i in x[2:]: d+=int(i) return d n=int(input()) start,end=map(int,input().split()) stone=list(map(int,input().split())) x=[start]+stone+[end] graph=[[] for i in range(n+2)] for i in range(n+1): for j in range(i+1,n+2): if hamming(x[i],x[j])==1: graph[i].append(j) graph[j].append(i) res=BFS(0,n+2) if not res: print(-1) else: print(res-1)