# -*- coding: utf-8 -*- def main(): N = int(input()) que = [] que.append(1) dist = [-1] * (N + 1) dist[1]=1 while len(que) > 0: pos = que[0] que.pop(0) steps = count_bit(pos) if pos - steps > 0 and dist[pos - steps] == -1: dist[pos - steps] = dist[pos] + 1 que.append(pos - steps) if pos + steps <= N and dist[pos + steps] == -1: dist[pos + steps]= dist[pos] + 1 que.append(pos + steps) print(dist[N]) def count_bit(num): return str(bin(num)).count("1") if __name__ == '__main__': main()