#include using namespace std; int n; int R[10005]; int minn[10005]; void DFS(int now,int t){ if(now==n){ minn[n]=min(minn[n],t); return ; } if(minn[now]>t){ minn[now]=t; int l=now-R[now],r=now+R[now]; if(l>=1)DFS(l,t+1); if(r<=n)DFS(r,t+1); } } int main(){ cin>>n; for(int i=1;i<=n;i++){ R[i]=__builtin_popcount(i); } memset(minn,0x3f,sizeof minn); DFS(1,1); cout<<(minn[n]>1e9?-1:minn[n]); }