from collections import deque inpl = lambda: list(map(int,input().split())) N = int(input()) visited = [False]*N q = deque([-1,0]) ans = 0 while q: x = q.popleft() if x == N-1: print(ans) exit() elif x < 0: ans += 1 if q: q.append(-1) elif not visited[x]: visited[x] = True w = bin(x+1).count('1') for y in [x-w, x+w]: if y < 0 or y > N-1: continue elif not visited[y]: q.append(y) else: print(-1)