import collections N = input() dist = [-1] * (N + 1) queue = collections.deque() dist[1] = 1 queue.append(1) while queue: v = queue.popleft() amount = bin(v).count('1') for direction in (-1, 1): u = v + direction * amount if 0 < u <= N and dist[u] == -1: dist[u] = dist[v] + 1 queue.append(u) print dist[N]