from collections import deque def popcount(x): x -= (x >> 1) & 0x5555 x = (x & 0x3333) + ((x >> 2) & 0x3333) x = (x + (x >> 4)) & 0x0f0f x += x >> 8 return x & 0x1f N = int(input()) X = [[] for i in range(N + 1)] for i in range(1, N): pc = popcount(i) if i - pc > 0: X[i].append(i - pc) if i + pc <= N: X[i].append(i + pc) def BFS(n, E, i0=0): Q = deque([i0]) D = [-1] * n D[i0] = 1 while Q: x = Q.popleft() for c in E[x]: if D[c] == -1: D[c] = D[x] + 1 Q.append(c) return D print(BFS(N + 1, X, 1)[-1])