from collections import deque def bfsp(i,k): if i+k <= N: if box[i+k] > 0: box[i+k] = min(box[i] + 1, box[i+k]) else: box[i+k] = box[i] + 1 q.append(i+k) def bfsm(i,k): if i-k >= 1: if box[i-k] > 0: box[i-k] = min(box[i] + 1, box[i-k]) else: box[i-k] = box[i] + 1 q.append(i-k) N = int(input()) box = [0 for _ in range(N+1)] box[1] = 1 q = deque() q.append(1) while len(q) > 0: i = q.popleft() if box[i] <= 0: q.append(i+1) continue s = bin(i) k = s.count("1") bfsp(i,k) bfsm(i,k) if box[N] > 0: print(box[N]) else: print(-1)