N = int(input()) B = [] counter = [] routes = [[1]] visited = [1] turns = -1 for x in range(0, N) : B.append(bin(x+1)) counter.append(B[x].count('1')) while routes : grid = routes.pop(0) grid_a = grid[:] grid_b = grid[:] present = grid[-1] s1 = present + counter[present-1] s2 = present - counter[present-1] if present == N : turns = len(grid) if s1 not in visited and 0 < s1 <= N : visited.append(s1) grid_a.append(s1) routes.append(grid_a) if s2 not in visited and 0 < s2 <= N : visited.append(s2) grid_b.append(s2) routes.append(grid_b) print(turns)