import scala.io.StdIn.readLine import scala.collection.mutable.Queue @main def yuki3(): Unit = val N = readLine().split(" ").map(_.toInt).head val dist: Array[Int] = Array.ofDim[Int](10001) val visited: Array[Boolean] = Array.ofDim[Boolean](10001) var q = Queue[Int](1) visited(1) = true while q.nonEmpty do val x = q.dequeue var p = 0 var num = x while num != 0 do p += num & 1 num >>= 1 if x + p <= N && !visited(x + p) then visited(x + p) = true dist(x + p) = dist(x) + 1 q.enqueue(x + p) if x - p > 0 && !visited(x - p) then visited(x - p) = true dist(x - p) = dist(x) + 1 q.enqueue(x - p) println(if visited(N) then dist(N) + 1 else -1)