import java.util.LinkedList; import java.util.Scanner; public class Main { static int[][] to = { { -1, -2 }, { -2, -1 }, { -2, 1 }, { -1, 2 }, { 1, 2 }, { 2, 1 }, { 2, -1 }, { 1, -2 } }; public static void main(String[]args) { Scanner in = new Scanner(System.in); while(in.hasNext()) { boolean vis[][] = new boolean[9][9]; int time = 0; String s = in.next(); String e = in.next(); int sx = s.charAt(0) - 'a'+1; int sy = s.charAt(1) -48; int ex = e.charAt(0) - 'a'+1; int ey = e.charAt(1) -48; point p = new point(sy,sx); vis[sy][sx] = true; LinkedList<point> list1 = new LinkedList<point>(); LinkedList<Integer> list2 = new LinkedList<Integer>(); list1.add(p); list2.add(0); while(!list1.isEmpty()) { point p1 = list1.poll(); time = list2.poll(); if(p1.x == ey && p1.y==ex) break; for(int i = 0;i<8;i++) { int a = p1.x+to[i][0]; int b = p1.y+to[i][1]; if(a>0 && b>0 && a<9 && b<9 && !vis[a][b]) { point p2 = new point(a,b); list1.add(p2); list2.add(time+1); vis[a][b] = true; } } } System.out.println("To get from "+s+" to "+e+" takes "+time+" knight moves."); } } } class point { int x; int y; point(int a,int b) { x = a; y = b; } } /************************************************************** Problem: 2124 User: admin Language: Java Result: Accepted Time:1035 ms Memory:43728 kb ****************************************************************/