N = int(input()) def calc(n): s = bin(n) l = len(s)-2 c = 0 for i in range(l): if n>>i & 1 == 1: c += 1 return c copy = [-1 for _ in range(N)] copy[0] = 1 used = [0 for _ in range(N)] from collections import deque que = deque() que.append(1) while que: i = que.popleft() if used[i-1] == 1: continue used[i-1] = 1 n = calc(i) j = n if i - j > 0: if copy[i-j-1] == -1: copy[i-j-1] = copy[i-1]+1 que.append(i-j) if i + j <= N : if copy[i+j-1] == -1: copy[i+j-1] = copy[i-1]+1 que.append(i+j) print(copy[N-1])