#include using namespace std; #define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++) #define rep(i,n) repl(i,0,n) #define mp(a,b) make_pair((a),(b)) #define pb(a) push_back((a)) #define all(x) (x).begin(),(x).end() #define uniq(x) sort(all(x)),(x).erase(unique(all(x)),end(x)) #define fi first #define se second #define dbg(x) cout<<#x" = "<<((x))< ostream& operator<<(ostream& o, const pair &p){o<<"("< ostream& operator<<(ostream& o, const vector &v){o<<"[";for(T t:v){o<>n; vector> vec(n); rep(i,n){ int x = __builtin_popcount(i+1); if(i-x>=0) vec[i].pb(i-x); if(i+x d(n,INF); d[0]=1; queue q; q.push(0); while(!q.empty()){ int v = q.front(); q.pop(); for(auto to : vec[v]){ if(d[to] > d[v]+1){ q.push(to); d[to] = d[v]+1; } } } if(d[n-1]==INF) d[n-1] = -1; cout << d[n-1] << endl; return 0; }