#include #include #include #include using namespace std; using ll =long long; void solve(){ ll N;cin >> N; vector ban(N+1,(1LL<<60)); ban[1]=0; queue que; que.push(1); while(!que.empty()){ ll a=que.front();que.pop(); if(a==N){ cout << ban[a]+1 << endl; return; } ll b=__popcount(a); if(a+b<=N&&ban[a+b]==(1LL<<60)){ ban[a+b]=ban[a]+1; que.push(a+b); } if(a-b>=0&&ban[a-b]==(1LL<<60)){ ban[a-b]=ban[a]+1; que.push(a-b); } } cout << -1 << endl; return; } int main(){ solve(); return 0; }