#include using namespace std; int bit(int num){ int s=0; while(num != 0){ if(num%2 == 1){ s++; } num /= 2; } return s; } int main(){ int N; cin >> N; queue q; q.push(1); vector his(N+1); his.at(1) =1; for(int i = 0; i < N; i++){ if(q.empty()){ cout << -1 << endl; break; } if(N == q.front()){ cout << his.at(q.front()) << endl; break; } if(q.front()+bit(q.front()) <= N){ if(his.at(q.front()+bit(q.front())) == 0){ q.push(q.front()+bit(q.front())); his.at(q.front()+bit(q.front())) = his.at(q.front()) +1; } } if(q.front()-bit(q.front()) > 1 ){ if(his.at(q.front()-bit(q.front())) == 0){ q.push(q.front()-bit(q.front())); his.at(q.front()-bit(q.front())) = his.at(q.front()) +1; } } q.pop(); } }