#include using std::scanf; using std::printf; using ll = long long; int d[10101]; int v[10101]; int dist[10101]; int q[10101]; ll readint() { long long n; scanf("%lld", &n); return n; } signed main() { for (int i = 1; i < 10101; ++i) d[i] = d[i/2] + i%2; int qe = 0; int qs = 0; int n = readint(); auto push = [&](int i, int nd) { if (i < 1 || i > n) return; if (!v[i]) v[i] = 1, dist[i] = nd, q[qe++] = i; }; dist[n] = -2; push(1, 0); while (qs < qe) { int i = q[qs++]; push(i - d[i], dist[i] + 1); push(i + d[i], dist[i] + 1); } printf("%d\n", dist[n] + 1); return 0; }