using System; using System.Collections.Generic; namespace yukicoder { class _003 { static void Main() { int n = int.Parse(Console.ReadLine()); int[] dp = new int[n]; dp[0] = 1; Queue q = new Queue(); q.Enqueue(0); while (q.Count > 0) { int p = q.Dequeue(); int m = bit(p + 1); for (int i = -m; i <= m; i += 2 * m) { int t = p + i; if (t > 0 && t < n && dp[t] == 0) { dp[t] = dp[p] + 1; if(t == n - 1) { q.Clear(); continue; } q.Enqueue(p + i); } } } if (dp[n - 1] != 0) { Console.WriteLine(dp[n - 1]); } else { Console.WriteLine("-1"); } Console.ReadLine(); } static int bit(int n) { int ret = 0; while (n > 0) { n &= n - 1; ret++; } return ret; } } }