#include using namespace std; #define int long long #define INF 101010101 #define MAX 10000 int N, temp2[11000]; int huga(int a){ int ans=0; while(a){ if(a%2)ans++; a/=2; } return ans; } int foo(int a, int k){//cout<>t; if(a==N)return k; int temp = huga(a), ans=INF; if(a-temp >= 1){ if(temp2[a-temp] > k){ temp2[a-temp] = k; ans = min(foo(a-temp,k+1), ans); } } if(a+temp <= N){ if(temp2[a+temp] > k){ temp2[a+temp] = k; ans = min(foo(a+temp,k+1), ans); } } return ans; } signed main(){ cin>>N; for(int i = 0; i <= MAX; i++)temp2[i]=INF; temp2[1]=1; int ans = foo(1,1); if(ans==INF)cout<<-1<