#include using namespace std; #define Rep(i,N) for(int i = 0;i < N;i++) int main(){ int N; queueque; que.push(1); cin >> N; int now; int mc[10001]; memset(mc,-1,sizeof(mc)); mc[1] = 1; while(!que.empty()){ now = que.front();que.pop(); if(now == N)break; int hosu = 0; for(int i = 0;1 << i <= now;i++)hosu += (now >> i) & 1; if(!(~mc[now - hosu])){ mc[now - hosu] = mc[now] + 1; que.push(now - hosu); } if(!(~mc[now + hosu]) && now + hosu <= N){ mc[now + hosu] = mc[now] + 1; que.push(now + hosu); } } cout << mc[N] << endl; return 0; }