#include<bits/stdc++.h>
using namespace std;
string s,z;
int a[10][10];
int vis[10][10];
int dir[8][2]={{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1}};
int xs,ys,xz,yz;
struct node{
int x,y,step;
};
queue<node> q;
void bfs(){
q.push(node{xs,ys,0});
vis[xs][ys]=1;
while(!q.empty()){
node t=q.front();
if(t.x==xz&&t.y==yz){
cout<<"To get from "<<s<<" to "<<z<<" takes "<<t.step<<" knight moves."<<endl;
}
for(int i=0;i<8;i++){
int xx=t.x+dir[i][0];
int yy=t.y+dir[i][1];
if(xx>=1&&xx<=8&&yy>=1&&yy<=8&&vis[xx][yy]==0){
vis[xx][yy]=1;
q.push(node{xx,yy,t.step+1});
}
}
q.pop();
}
}
int main(){
while(cin>>s>>z){
while(!q.empty())q.pop();
memset(vis,0,sizeof(vis));
ys=s[0]-'a'+1;xs=s[1]-'0';
yz=z[0]-'a'+1;xz=z[1]-'0';
bfs();
}
return 0;
}
谢谢各位了 跪