from collections import deque n = input() mv = [bin(i).count("1") for i in xrange(n+1)] dist = [-1]*(n+1) deq = deque() deq.append(1) dist[1] = 1 while deq: v = deq.popleft() if v+mv[v]<=n and dist[v+mv[v]]==-1: deq.append(v+mv[v]) dist[v+mv[v]] = dist[v]+1 if v-mv[v]>0 and dist[v-mv[v]]==-1: deq.append(v-mv[v]) dist[v-mv[v]] = dist[v]+1 print dist[n]