import queue N = int(input()) pops = [ 0 ] * (N + 1) for i in range(1, N + 1): pops[i] = pops[i >> 1] + (i & 1) dist = [ -1 ] * (N + 1) dist[1] = 1 q = queue.Queue() q.put(1) while not q.empty(): v = q.get() if v + pops[v] <= N and dist[v + pops[v]] == -1: dist[v + pops[v]] = dist[v] + 1 q.put(v + pops[v]) if v - pops[v] >= 1 and dist[v - pops[v]] == -1: dist[v - pops[v]] = dist[v] + 1 q.put(v - pops[v]) print(dist[N])