#include #include #include #include #include #include #include #define rep(i,a,b) for(int i=(a);i vect(n+1,INF); queueque; que.push(1); vect[1]=1; while(que.size()){ int now=que.front();que.pop(); int bit=change(now); if(now-bit>0&&vect[now-bit]==INF){ vect[now-bit]=vect[now]+1; que.push(now-bit); } if(now+bit<=n&&vect[now+bit]==INF){ vect[now+bit]=vect[now]+1; que.push(now+bit); } } cout<<( vect[n]!=INF ? vect[n] : -1 ) <>n; bfs(); return 0; }