#include using namespace std; int mp[10001]; int dis[10001]; void cul_dis(){ for(int i=1; i<10001; i++){ int n=i; while(true){ if(n==1){ dis[i]++; break; } dis[i]+=n%2; n=n/2; } } } int main(){ int N; queue q; fill(mp+3,mp+10001,1000000); mp[1]=0; mp[2]=1; cin>>N; cul_dis(); q.push(2); while(!q.empty()){ if(q.front()+dis[q.front()]<=N&&mp[q.front()+dis[q.front()]]==1000000){ mp[q.front()+dis[q.front()]]=mp[q.front()]+1; q.push(q.front()+dis[q.front()]); } if(q.front()-dis[q.front()]>1){ if(mp[q.front()-dis[q.front()]]==1000000){ mp[q.front()-dis[q.front()]]=mp[q.front()]+1; q.push(q.front()-dis[q.front()]); } } q.pop(); //cout<