import sys sys.setrecursionlimit(10**7) N = int(input()) dist = [float('inf')] * (N+1) dist[1] = 1 def dfs(now): v = str(format(now, 'b')).count('1') for x in [1, -1]: nxt = now + v*x if 1 < nxt <= N: if dist[nxt] > dist[now] + 1: dist[nxt] = dist[now] + 1 dfs(nxt) dfs(1) if dist[N] < float('inf'): ans = dist[N] else: ans = -1 print(ans)