#include typedef long long ll; #define INF 1000000000 #define MOD 1000000007 using namespace std; int dx[4]={1,0,-1,0},dy[4]={0,-1,0,1}; int calc(int num){ int cnt=0; while(num){ if(num%2)cnt++; num=floor(num/2); } return cnt; } int main(void){ int n; cin>>n; vectordp(n+2,INF); queueque; que.push(1); dp[1]=1; while(!que.empty()){ int tmp=que.front(); que.pop(); int num=calc(tmp); int pre=tmp-num,next=tmp+num; if(pre>=1){ if(dp[pre]>dp[tmp]+1){ que.push(pre); dp[pre]=dp[tmp]+1; } } if(next<=n){ if(dp[next]>dp[tmp]+1){ que.push(next); dp[next]=dp[tmp]+1; } } } if(dp[n]!=INF){ cout<