from collections import deque N = int(input()) dist = [-1] * (N + 1) dist[1] = 1 que = deque([1]) while que: pos = que.popleft() step = pos.bit_count() for i in [1, -1]: nex = pos + i*step if 1 <= nex <= N and dist[nex] == -1: dist[nex] = dist[pos] + 1 que.append(nex) ans = dist[N] print(ans)