from collections import deque def bfs(): queue = deque() queue.append(1) nums = [0]*N nums[0] = 1 while queue: n = queue.popleft() if n == N: return nums[n-1] move = format(n,"b").count("1") if 1 <= n-move <= N and nums[n-move-1] == 0: queue.append(n-move) nums[n-move-1] += nums[n-1] + 1 if 1 <= n+move <= N and nums[n+move-1] == 0: queue.append(n+move) nums[n+move-1] += nums[n-1] + 1 return -1 N = int(input()) print(bfs())