object Main { def main(args: Array[String]): Unit = { val n = readInt() val distance = Array.fill(n + 1)(-1) val que = new scala.collection.mutable.Queue[Int] que += 1 distance(1) = 1 while(!que.isEmpty){ val x = que.dequeue() val y = x.toBinaryString.map(_.toInt - 48).sum for(z <- Array(x+y, x-y)){ if(1 <= z && z <= n && distance(z) == -1){ distance(z) = distance(x) + 1 que += z } } } println(distance(n)) } }