#include #define MOD 1000000007 #define INF (1<<30) #define INFL (1<<62) #define pe(str) return cout<<(str)<=0;i--) #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b);i>=(a);i--) #define bw(a,b,c) (((a)<=(b))&&((b)<=(c))) #define hello cout<<"hello"<>n using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair pii; typedef complex point; template void dump(InputIterator first,InputIterator last,char delim=' '){ for(InputIterator it=first;it!=last;it++){ if(it!=first)cout< void swp(T &a,T &b){ T t=a; a=b; b=t; } int n; int a[10001]; void dfs(int w,int x){ if(w==n)px(x); a[w]=x; int k=bpc(w); if(a[w+k]>x+1)dfs(w+k,x+1); if(w-k>=1&&a[w-k]>x+1)dfs(w-k,x+1); } int main(void){ cin>>n; re(i,n+1)a[i]=INF; a[1]=0; int w=1; dfs(1,1); px(-1); return 0; }