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
****************************************************************/