#include #include #include using namespace std; vector d = {-1, 1}; int main(){ int N; cin >> N; vector d(N + 1, -1); d[1] = 1; queue Q; Q.push(1); while (!Q.empty()){ int v = Q.front(); Q.pop(); for (int i = 0; i < 2; i++){ int w = v + __builtin_popcount(v) * d[i]; if (1 <= w && w <= N){ if (d[w] == -1){ d[w] = d[v] + 1; Q.push(w); } } } } cout << d[N] << endl; }