from collections import deque


def main():
    n = int(input())

    dist = [0] * (n + 1)
    dist[1] = 1
    q = deque()
    q.append(1)
    while q:
        v = q.popleft()
        if v == n:
            exit(print(dist[v]))
        bc = v.bit_count()
        v1 = v + bc
        v2 = v - bc
        if v1 <= n and dist[v1] == 0:
            dist[v1] = dist[v] + 1
            q.append(v1)
        if v2 >= 1 and dist[v2] == 0:
            dist[v2] = dist[v] + 1
            q.append(v2)
    print(-1)


if __name__ == "__main__":
    main()