public class KnightDistance { public static int dist(int x1, int y1, int x2, int y2) { int dx = Math.abs(x2 - x1); int dy = Math.abs(y2 - y1); int moves = Math.max((dx + 1) / 2, (dy + 1) / 2); moves = Math.max(moves, (dx + dy + 2) / 3); if (moves % 2 != (dx + dy) % 2) ++moves; if (dx == 1 && dy == 0) return 3; if (dy == 1 && dx == 0) return 3; if (dx == 2 && dy == 2) return 4; return moves; } public static void main(String[] args) { } }