using System;
using System.Collections.Generic;

class BitSugoroku
{
	static void Main(string[] args)
	{
		int N = int.Parse(Console.ReadLine());
		int[] steps = new int[N+1];
		Queue<int> queue = new Queue<int>();

		for(int i=0; i<=N; i++)
		{
			steps[i] = -1;
		}

		steps[1] = 1;
		queue.Enqueue(1);

		while(queue.Count != 0)
		{
			int t = queue.Dequeue();
			int step = bitCount(t);
			if(t+step <= N && steps[t+step] == -1)
			{
				steps[t+step] = steps[t] + 1;
				queue.Enqueue(t+step);
			}
			if(t-step >= 1 && steps[t-step] == -1)
			{
				steps[t-step] = steps[t] + 1;
				queue.Enqueue(t-step);
			}
		}
		Console.WriteLine(steps[N]);
	}
	
	static int bitCount(int n)
	{
		int count=0;
		while(n > 0)
		{
			if((n & 0x01) == 0x01)
				count++;
			n >>= 1;
		}
		return count;
	}
}