n = int(input()) from collections import deque q = deque([]) q.append(1) INF = 10**18 dist = [INF]*(n+1) dist[1] = 1 while q: v = q.popleft() a = format(v, 'b').count('1') if 1 <= v-a <= n: if dist[v-a] == INF: q.append(v-a) dist[v-a] = dist[v]+1 if 1 <= v+a <= n: if dist[v+a] == INF: q.append(v+a) dist[v+a] = dist[v]+1 if dist[n] != INF: print(dist[n]) else: print(-1)