from collections import deque def popcount(x): binQ = bin(x)[2:] return binQ.count("1") N = int(input()) INF=float('inf') visited = [INF] * (N+1) visited[1] = 1 que = deque() que.append(1) while que: q = que.popleft() cnt = popcount(q) if q+cnt <= N and visited[q+cnt] > visited[q] + 1: visited[q+cnt] = visited[q] + 1 que.append(q+cnt) if 0 <= q-cnt and visited[q-cnt] > visited[q] + 1: visited[q-cnt] = visited[q] + 1 que.append(q-cnt) if visited[N] == INF: print(-1) else: print(visited[N])