#include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,inf = 1e9; cin >> N; vector dist(N+1,inf); dist.at(1) = 1; queue Q; Q.push(1); while(Q.size()){ int num = Q.front(); int one = 0; while(num){ if(num&1) one++; num >>= 1; } num = Q.front(); Q.pop(); if(num+one <= N && dist.at(num+one) == inf) dist.at(num+one) = dist.at(num)+1,Q.push(num+one); if(num-one >= 1 && dist.at(num-one) == inf) dist.at(num-one) = dist.at(num)+1,Q.push(num-one); } if(dist.at(N) == inf) dist.at(N) = -1; cout << dist.at(N) << endl; }