Problem B
Knight Jump
You are given a two dimensional chess board of size $N \times N$ ($1$-based indexing). Some of the cells on this board are ‘.’ denoting an empty cell. Some of the cells on this board are ‘#’ denoting a blocked cell, which you are not allowed to visit. Exactly one of the cells on this board is ‘K’ denoting the initial position of the knight.
A knight at position $(r, c)$ can move to any of the valid positions in set $S$ = $\{ (r + 2, c + 1)$, $(r + 2, c - 1)$, $(r - 2, c + 1)$, $(r - 2, c - 1)$, $(r + 1, c + 2)$, $(r + 1, c - 2)$, $(r - 1, c + 2)$, $(r - 1, c - 2)\} $. Here valid position means that the resulting $(r’, c’)$ should be within the bounds of the chess grid, i.e. $1 \leq r’ \leq N$ and $1 \leq c’ \leq N$.
The question is you have to determine the minimum number of steps required for the Knight to reach cell $(1, 1)$ avoiding cells with ‘#’ in the path.
Note - There will be exactly one ‘K’ in the grid and cell $(1, 1)$ will NOT be a ‘#’.
Input
The first line contains an integer $N$ ($1 \le N \le 10^2$) denoting the dimension of the chess board. Each of the next $N$ lines contains a string denoting the $i^{th}$ row. The length of these strings will be $N$.
Output
Print the value of minimum number of steps. However, if $(1, 1)$ is not reachable, print ‘-$1$’ (without the quotes).
Sample Input 1 | Sample Output 1 |
---|---|
4 .... .... .... ...K |
2 |
Sample Input 2 | Sample Output 2 |
---|---|
3 ..K ... ### |
-1 |