编程题
### 问题描述
现在有一座 大小为 $N \times N$ 的城市,城市的道路网络可以看作一个 $N \times N$ 的网格。你是这个城市的物流经理,需要为一家配送公司找到最佳的配送路径。城市的道路被建成一个规则的网格系统,但由于一些施工、交通事件和禁行区,某些道路段不能通行。你的任务是使用 A-star 算法找到从仓库到指定地址的最短路径。
### 输入格式
第一行包含一个整数 $N$,表示城市的大小。
接下来的 $N$ 行,每行包含 $N$ 个字符,表示每个网格的状态。其中 `.` 表示该区域可以通行,`#` 表示该区域不可以通行(例如施工区或禁行区)。
最后一行包含四个整数:仓库的坐标 $x_1, y_1$ 和目标地址的坐标 $x_2, y_2$。坐标系的左上角是 $(0,0)$。
### 输出格式
输出从仓库到目标地址的最短路径的步数。如果没有可行的路径,输出 `-1`。
### 样例输入
```
5
.....
.#...
.....
.....
.....
0 0 4 4
```
### 样例输出
```
8
```
### 样例说明
仓库位于网格的左上角,目标地址位于右下角。最短的路径是直接向右和向下走,绕过不可通行的区域。总共需要走 $8$ 步。
### 测评数据规模
对于 $40$% 的数据,$2 \leq N \leq 10$。
对于 $80$% 的数据,$2 \leq N \leq 50$。
对于 $100$% 的数据,$2 \leq N \leq 100$。