https://www.acmicpc.net/problem/1697
import java.util.*;
var check=Array(0, {0})
var n: Int=0
var k: Int=0
fun bfs(a:Int){
var q=LinkedList<Int>()
var w=LinkedList<Int>()
q.add(a)
w.add(0)
check[a]=1
while(!q.isEmpty()){
val v0=q.poll()
val v1=w.poll()
if(v0==k){
print(v1)
return
}
if(2*v0<=100000 && check[2*v0]==0){
check[2*v0]=1
q.add(2*v0)
w.add(v1+1)
}
if(v0+1<=100000 && check[v0+1]==0){
check[v0+1]=1
q.add(v0+1)
w.add(v1+1)
}
if(v0-1>=0 && check[v0-1]==0){
check[v0-1]=1
q.add(v0-1)
w.add(v1+1)
}
}
}
fun main(args: Array<String>) {
val s=Scanner(System.`in`)
n=s.nextInt()
k=s.nextInt()
check=Array(100001,{0})
bfs(n)
}