#include // #include using namespace std; // using namespace atcoder; typedef long long ll; typedef vector vi; typedef vector vll; #define _overload3(_1,_2,_3,name,...) name #define _rep(i,n) repi(i,0,n) #define repi(i,a,b) for(int i=int(a);iint(b);--i) #define rrep(...) _overload3(__VA_ARGS__,rrepi,_rrep)(__VA_ARGS__) #define all(x) (x).begin(),(x).end() #define sort(x) sort(all(x)) #define rev(x) reverse(all(x)) const ll inf = (1LL<<60)+(1LL<<30); templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> N; vi d(N+1, -2); d[1] = 0; queue q; q.push(1); while (!q.empty()) { int u = q.front(); q.pop(); int c = __popcount(u); for (auto v: {u+c, u-c}) { if (v < 1 || N < v || d[v] != -2) continue; d[v] = d[u] + 1; q.push(v); } } cout << d[N]+1 << endl; }