#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; int main() { int n; cin>>n; map mp; int a[50050]; cin>>a[0]>>a[n+1]; mp[a[0]]=0, mp[a[n+1]]=n+1; for(int i=1; i>a[i]; mp[a[i]]=i; } const int INF=1e9; int d[50050]; fill(d, d+n+2, INF); d[0]=0; queue que; que.push(0); while(!que.empty()){ int x=que.front(); que.pop(); for(int i=0; i<30; i++){ int b=(a[x]^(1<d[x]+1){ d[y]=d[x]+1; que.push(y); } } } } if(d[n+1]==INF) cout<<-1<