n = int(input()) lst1 = [] for i in range(1,100001): dig = len(bin(i))-2 res = 0 for j in range(dig): if i >> j & 1: res += 1 lst1.append(res) visited = [0]*(n+1) ret = 10**9 def bfs(now,ans): global ret if now == n-1: ret = min(ret,ans) return if now > n or now < 0: return if visited[now] == 1: return visited[now] = 1 bfs(now+lst1[now],ans+1) bfs(now-lst1[now],ans+1) return ret if ret < 10**9 else -1 print(bfs(0,1))