# 1963번. 소수경로
fromcollectionsimportdeque# 일단 4자리 소수를 모두 담아준다
primeList=[Falseforiinrange(10000)]foriinrange(2,10000):ifnotprimeList[i]:forjinrange(i+i,10000,i):primeList[j]=Truedefbfs():q=deque([[before,0]])visited=[Falseforiinrange(10000)]# visited[before] = True
whileq:cur,time=q.popleft()ifcur==after:# 도착하면
returntime# 리턴
# 수 바꿔보기
foriinrange(4):forjinrange(10):ifi==0andj==0:# 첫번째 자리에 0이 오는 경우
continuenextNum=int(str(cur)[:i]+str(j)+str(cur)[i+1:])# 다음 수
# 소수이고, 방문하지 않았을 때
ifnotprimeList[nextNum]andnotvisited[nextNum]:visited[nextNum]=Trueq.append([nextNum,time+1])# 다음 큐에 넣어줌
for_inrange(int(input())):before,after=map(int,input().split())ifbefore==after:print(0)continueprint(bfs())