NAKANJ - Minimum Knight moves !!!


Anjali and Nakul are good friends. They both had a quarrel recently while playing chess. Nakul wants to know the minimum number of moves a knight takes to reach from one square to another square of a chess board (8X8). Nakul is brilliant and he had already written a program to solve the problem. Nakul wants to know whether Anjali can do it. Anjali is very weak in programming. Help her to solve the problem.

A knight can move in the shape of an "L" in a chessboard - two squares either forward, backward, left, or right and then one square to its left or right. A knight move is valid if it moves as mentioned above and it is within the boundary of the chessboard (8 X 8).

http://0.tqn.com/d/chess/1/0/6/-/-/-/KnightMoves.gif

Input

There are T test cases in total. The next T lines contain two strings (start and destination) separated by a space.

The strings start and destination will only contain two characters - First character is an alphabet between 'a' and 'h' (inclusive), Second character is a digit between '1' and '8' (inclusive) - (Quotes just for clarity).

To know the knight moves more clearly refer to the above figure.

Output

Print the minimum number of moves a knight takes to reach from start to destination in a separate line.

Constarints

1 <= T <= 4096

Example

Input:
3
a1 h8
a1 c2
h8 c3

Output:
6
1
4

hide comments
Rajat Gautam: 2017-06-12 22:01:25

If facing run time error make sure to give space to nul charater of string for storing.

invinci: 2017-06-11 20:18:09

building the graph took me half an hour, otherwise easy bfs problem, anyways AC in one go ;)

akash619j: 2017-05-02 13:22:00

AC in one go! Thanks to queue and pair stl in c++ :)

nilabja16180: 2017-04-02 09:16:10

AC IN ONE GO!
1st chess problem!

holmesherlock: 2017-03-25 20:00:19

damn irritating runtime error for a very stupid statement missing,otherwise enjoyed doing it

vladimira: 2017-03-02 16:32:15

Very tricky, at first I thought it is an easy-pizy one.
Why pypy solve in 0.06s when cpython in 0.01s? Usually it is the other way round.
Another question: why my python uses 2.5x times more memory comparing to other people in all the problems I've solved (40+ problems)?

=(Francky)=> With the changes of compilers, and versions (eg Python), we have some changes with the memory used. Many info about old submissions such time, memory are not reliable with some new submissions.

@Francky thx =)

Last edit: 2017-03-02 20:32:04
devbishnoi: 2017-02-05 18:52:54

U need to find minimum no of moves. And here it costs 1 in each move so bfs also can work. DFS cannot work here.

Last edit: 2017-02-05 18:53:26
secret1: 2017-02-02 06:33:30

CAN IT BE SOLVED USING DFS?

a1796: 2017-01-01 21:54:11

ny first bfs :D

domino2016: 2016-11-26 16:05:07

Interesting problem


Added by:Nakul Krishna
Date:2012-09-30
Time limit:0.165s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:Used for Code it - Vidyut 2012 - Amrita University