#int(input()) #map(int, input().split()) #list(map(int, input().split())) N = int(input()) def popcnt(n): return bin(n).count("1") to = [[] for i in range(N+1)] if N > 1: to[1] = [2] for i in range(2, N+1): p = popcnt(i) if i + p <= N: to[i] = [i+p, i-p] else: to[i] = [i-p] q = [1] v = [-1] * (N+1) v[1] = 1 from collections import deque q = deque(q) while q: t = q.popleft() for x in to[t]: if v[x] != -1: continue v[x] = v[t] + 1 q.append(x) print(v[N])