#include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(I,N) for(int I = 0; I < (int)(N); I++) #define FIN(V) cout< P; string sValueOf(int v){stringstream ss;ss<>i;return i;} void fast_io() {cin.tie(0); ios::sync_with_stdio(false);} int n; int memo[10001]; int bfs(){ queue

que; que.push(P(1,1)); while(que.size()){ P d = que.front();que.pop(); int at = d.first; int c = d.second; if(at<1||at>n)continue; if(memo[at]<=c)continue; memo[at] = c; if(at==n)return c; int count = 0; FOR(i,32){ if((at>>i)&1)count++; } que.push(P(at+count,c+1)); que.push(P(at-count,c+1)); } return INF; } int main(){ int i,j; cin>>n; fill_n(memo,10001,INF); int ans = bfs(); if(ans==INF){ ans = -1; } cout<