import sys sys.setrecursionlimit(10**6) n=int(input()) ns=[] for i in range(n): ns.append(str(bin(i+1)).count('1')) inf=10**7 dist=[inf]*n ans=[10**10] def dfs(x,cnt): dist[x] = cnt if x == n-1: ans[0] = min(ans[0],cnt) return if x+ns[x] < n: if dist[x+ns[x]] > cnt+1: dfs(x+ns[x],cnt+1) if x-ns[x] >= 0: if dist[x-ns[x]] > cnt+1: dfs(x-ns[x],cnt+1) dfs(0,0) if ans[0] == 10**10: print(-1) else: print(ans[0]+1)