#P2243. Knight Moves

Knight Moves

描述

你的一个朋友正在研究“骑士旅行问题”(Traveling Knight Problem, TKP),即在一个棋盘上找到一条最短的闭合路径,使得骑士能够恰好访问给定的一组nn个方格各一次。他认为这个问题最困难的部分是计算两个给定方格之间骑士移动的最少步数,而一旦解决了这个问题,找到整个路径就会变得容易。

当然,你知道事实恰恰相反。于是你主动提出帮他编写一个程序来解决这个“困难”的部分。

你的任务是编写一个程序,输入两个方格aabb,然后计算从aabb的最短路径所需的骑士移动步数。

输入

输入包含一个或多个测试用例。每个测试用例占一行,包含两个方格,中间用一个空格隔开。每个方格由一个表示棋盘列的字母(a-h)和一个表示棋盘行的数字(1-8)组成。

输出

对于每个测试用例,输出一行,格式为:“要从xx到yy需要n步骑士移动。”

输入数据 1

e2 e4  
a1 b2  
b2 c3  
a1 h8  
a1 h7  
h8 a1  
b1 c3  
f6 f6  

输出数据 1

要从 e2 到 e4 需要 2 步骑士移动。  
要从 a1 到 b2 需要 4 步骑士移动。  
要从 b2 到 c3 需要 2 步骑士移动。  
要从 a1 到 h8 需要 6 步骑士移动。  
要从 a1 到 h7 需要 5 步骑士移动。  
要从 h8 到 a1 需要 6 步骑士移动。  
要从 b1 到 c3 需要 1 步骑士移动。  
要从 f6 到 f6 需要 0 步骑士移动。