import queue n = int(input()) q = queue.Queue() mp = [10 ** 6] * n q.put(0) mp[0] = 1 while(not q.empty()): val = q.get() b = bin(val + 1).count('1') if val + b < n and mp[val] + 1 < mp[val + b]: mp[val + b] = mp[val] + 1 q.put(val + b) if val - b > 0 and mp[val] + 1 < mp[val - b]: mp[val - b] = mp[val] + 1 q.put(val - b) if mp[n - 1] < 10 ** 6: print(mp[n - 1]) else: print(-1)