#include #include #include #define MAX 10000000 using namespace std; int main() { int n; cin >> n; deque dq; dq.push_back(1); vector dist(n + 1, -1); dist[1] = 1; while (!dq.empty()) { int u = dq.front(); dq.pop_front(); int v = __builtin_popcount(u); if (u + v <= n && dist[u + v] == -1) { dq.push_back(u + v); dist[u + v] = dist[u] + 1; } if (1 <= u - v && dist[u - v] == -1) { dq.push_back(u - v); dist[u - v] = dist[u] + 1; } } cout << dist[n] << endl; }