#include #define rep(i, n) for (int i = 0; i < (n); i++) using namespace std; using ll = long long; using pii = pair; int main() { int n; cin >> n; vector d(n + 1, -1); d[1] = 1; queue q; q.push(1); while (q.size()) { int x = q.front(); q.pop(); int k = __builtin_popcount(x); if (x + k <= n && d[x + k] == -1) { d[x + k] = d[x] + 1; q.push(x + k); } if (x - k >= 1 && d[x - k] == -1) { d[x - k] = d[x] + 1; q.push(x - k); } } cout << d[n] << endl; return 0; }