import queue N = int(input()) lst = [] lst += [-1] * (N+10) lst[1] = 1 q = queue.Queue() q.put(1) while not q.empty(): current = q.get() go = bin(current).count("1") if (current - go > 0 and lst[current - go] == -1): lst[current - go] = lst[current] + 1 q.put(current - go) if (current + go <= N and lst[current + go] == -1): lst [current + go] = lst[current] + 1 q.put(current + go) print(lst[N])