#include using namespace std; int bit(int i){ int ans = 0; while(i){ ans += (i&1); i >>= 1; } return ans; } int main(){ int n; int v[10010]; cin >> n; memset(v, -1, sizeof(v)); queue > que; que.push(make_pair(1, 1)); while(!que.empty()){ int i = que.front().first; int cnt = que.front().second; que.pop(); if(v[i] != -1) continue; v[i] = cnt; int b = bit(i); if(i-b >= 1) que.push(make_pair(i-b, cnt+1)); if(i+b <= n) que.push(make_pair(i+b, cnt+1)); } cout << v[n] << endl; return 0; }