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