N = int(input()) def bfs(start, end): queue = [start] visited = set() c = 0 while queue: n = [] c += 1 for i in queue: if i == end: return c b1 = bin(i).count('1') av = i + b1 sv = i - b1 if av <= end and av not in visited: visited.add(av) n.append(av) if sv > 1 and sv not in visited: visited.add(sv) n.append(sv) queue = n return -1 if __name__ == '__main__': print(bfs(1,N))