program oj_1101;
const x:array[1..8]of longint=(-1,-1,1,1,-2,-2,2,2);
x1:array[1..8]of longint=(-2,2,-2,2,-1,1,-1,1);
var
min,xx,xx1,yy,yy1,n:longint;
a:array[1..8,1..8]of longint;
b:array[1..8,1..8]of boolean;
q:string;
procedure print(n:longint);
begin
writeln('To get from ',q[1],q[2],' to ',q[4],q[5],' takes ',n,' knight moves.');
end;
procedure search(xx,xx1:longint);
var
i:longint;
begin
if n<min then
if (xx=yy)and(xx1=yy1)then min:=n
else
begin
for i:=1 to 8 do
begin
if (xx+x[i]>=1)and(xx+x[i]<=8)and(xx1+x1[i]>=1)and(xx1+x1[i]<=8)then
if (b[xx+x[i],xx1+x1[i]]=false)then
begin
b[xx+x[i],xx1+x1[i]]:=true;
//a[xx]
inc(n);
search(xx+x[i],xx1+x1[i]);
dec(n);
b[xx+x[i],xx1+x1[i]]:=false;
end;
end;
end;
end;
begin
while not eof do
begin
fillchar(b,sizeof(b),false);
min:=maxlongint;
readln(q);
xx:=ord(q[1])-96;
xx1:=ord(q[2])-48;
yy:=ord(q[4])-96;
yy1:=ord(q[5])-48;
b[xx,xx1]:=true;
search(xx,xx1);
n:=0;
print(min);
end;
end.
/**************************************************************
Problem: 2124
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/