# 1697
import sys
from collections import deque
n,k = map(int, sys.stdin.readline().split())
dist = [0] * (10**5 +1)
# dist 의 인덱스는 거리들 (ex : 처음에 n이 5면 인덱스가 5인 부분이 1)
# 해당 인덱스의 값은 시간 초
def bfs() :
q = deque()
q.append(n)
while q : # queue 가 없을 때까지 반복
x = q.popleft()
if x == k :
print(dist[x])
return
for i in (x-1, x+1, 2*x) : # n이 5일 경우 (4,6,10)
if 0 <= i <= 10**5 and not dist[i] :
dist[i] = dist[x] + 1 # 그로부터 1초가 지났으니까
q.append(i)
bfs()
처음에 '이분 그래프' 에 대한 개념을 정확히 이해하지 못했다.
# 1707
import sys
from collections import deque
K = int(sys.stdin.readline())
results = []
def bfs(start) :
q = deque()
q.append(start)
colors[start] = 1
while q :
qh = q.popleft()
for i in graph[qh] :
if colors[i]==0 :
q.append(i)
colors[i] = -1 * colors[qh]
elif colors[i]==colors[qh]:
return False
return True
for _ in range(K) :
V , E = map(int, sys.stdin.readline().split())
bg = 'YES'
graph = [[] for _ in range(V+1)]
colors = [0 for _ in range(V+1)]
visited = [False for _ in range(V+1)]
for _ in range(E) :
a,b = map(int, sys.stdin.readline().split())
graph[a].append(b)
graph[b].append(a)
for i in range(1,V+1) :
if colors[i] == 0 : # 아직 색을 칠하지 않은 노드일 경우
if not bfs(i) :
bg = 'NO'
break
results.append(bg)
for r in results :
print(r)