#include <iostream>
#include <cstdio>
#include <queue>
#include <cstdlib>
#include <string>
using namespace std;
int dist[8][2] = {{2,1},{2,-1},{-2,1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2}};
int x,y,xx,yy;
int a,b;
struct P
{
int a,b,len;
};
queue<P> G;
P temp={0,0,0};
P ri={0,0,0};
int search(int x,int y)
{
P dui={x,y,0};
if(x==xx&&y==yy)return 0;
while(!G.empty())
G.pop();
G.push(dui);
while(!G.empty())
{
temp = G.front();G.pop();
//if(temp.a==xx&&temp.b==yy) return temp.len+1;
for(int i=0;i<8;i++)
{
ri.a = temp.a+dist[i][0];
ri.b= temp.b+dist[i][1];
ri.len = temp.len + 1;
if(ri.a==xx&&ri.b==yy)return ri.len;
if(ri.a>=0&&ri.b>=0&&ri.a<8&&ri.b<8){G.push(ri);}
}
}
return 0;
}
int main()
{
string a,b;
while(cin>>a>>b)
{
x = a[1]-'0'-1;y=a[0]-'a';
xx = b[1]-'0'-1;yy = b[0]-'a';
cout<<"To get from "<<a<<" to "<<b<<" takes "<<search(x,y)<<" knight moves."<<endl;
}
return 0;
}