#include #include #include #include #include using namespace std; using pii = pair; bool cmp(const pii& p, int key){ return p.first>N; int st, en; cin>>st>>en; vector vertex = {{st, 0}, {en, 1}}; vector stones(N+2); stones[0]=st, stones[1]=en; for (int i=2;i>stone; stones[i]=stone; vertex.push_back({stone, i}); } sort(vertex.begin(), vertex.end()); vector D(N+2, -1); D[0]=0; queue Q; Q.push(0); while(! Q.empty()){ int cur = Q.front(); Q.pop(); for (int i=0;i<30;i++){ int next = stones[cur] ^ (1<first==next){ if (D[it->second]!=-1) continue; D[it->second] = D[cur]+1; Q.push(it->second); } } } cout << (D[1]!=-1 ? D[1]-1 : -1) << "\n"; return 0; }