#include #include #include using namespace std; int main(void){ int n; cin >> n; vector ans(n+1, 1e8); queue> bfs; bfs.emplace(1, 0); while(bfs.size()){ auto [idx, cnt]=bfs.front(); bfs.pop(); if(ans[idx]!=1e8) continue; if(idx==n){ cout << cnt+1 << endl; return 0; } ans[idx]=cnt; int copy=idx; int k=0; while(copy>0){ if(copy%2) k++; copy/=2; } if(idx+k<=n) bfs.emplace(idx+k, cnt+1); if(idx-k>0) bfs.emplace(idx-k, cnt+1); } cout << -1 << endl; return 0; }