#include using namespace std; int n; int R[10005],dp[10005][2],ans=INT_MAX; bool f[10005]; void DFS(int now,int t){ if(now==n){ ans=min(ans,t); return ; } if(t>ans||(t==ans&&now!=n)){ return ; } f[now]=1; int l=now-R[now],r=now+R[now]; if(l>=1&&!f[l])DFS(l,t+1); if(r<=n&&!f[r])DFS(r,t+1); f[now]=0; } int main(){ cin>>n; for(int i=1;i<=n;i++){ R[i]=__builtin_popcount(i); } DFS(1,1); cout<<(ans==INT_MAX?-1:ans); }