from collections import deque n = int(input()) visit = [0]*(n+1) def bfs(v): visit[v]=1 q=deque() q.append(v) while len(q)>0: v = q.popleft() if v == n: return visit[v] L =str(bin(v)).count('1') if 0 < v+L <= n and visit[v+L]==0 : q.append(v+L) visit[v+L]=visit[v]+1 if 0 < v-L <= n and visit[v-L]==0 : q.append(v-L) visit[v-L]=visit[v]+1 return -1 print(bfs(1))