正方形(左下角坐标为(0,0),右上角坐标为(99,99))的格网地图上,有一只军犬要寻找一个宝物,格网上除了军犬与宝物之外,还有一些障碍物。一般情况下,只要不超出格网的边界,军犬的每一步最多有8个方向可供选择,如图1所示;但是必须注意,只有在A点没有障碍物时才可以选择方向1或方向2,只有在B点没有障碍物时才可以选择方向3或方向4,只有在C点没有障碍物时才可以选择方向5或方向6,只有在D点没有障碍物时才可以选择方向7或方向8。如果军犬可以从出发的位置走到宝物的位置,其总共使用的步数,理论上应有一个最小值;但是军犬也有可能无法走到宝物的位置。过程中,军犬不可以走到障碍物的位置上。
图1
以图2(1)为例,有多达4个障碍物(蓝色圈和黑色圈标记的为障碍,红色叉叉标记的是军犬位置,实心红色圈代表宝物)介于军犬与宝物之间,但是军犬最快只要2 步就可以到达宝物的位置。图2(2)中(实心黑色圈标记的为障碍,红色叉叉标记的是军犬位置,实心红色圈代表宝物),军犬的位置靠近角落,虽然只有 2 个障碍物,但军犬却无法到达宝物的位置。
图2
请设计算法并编写程序,若军犬可以从最初位置走到宝物的位置时,请输出其使用的最少步数;如果军犬无法到达宝物的位置,请输出字符串“impossible”。
【输入格式】:
第一行为一个整数n,代表障碍物的个数,0 ≤ n ≤ 1000。接下来的n行,每行表示一个障碍物的坐标,其横坐标值与纵坐标值间以一个空白隔开。
再下来的一行,表示军犬的最初位置,其横坐标值与纵坐标值间以一个空白隔开。最后一行,代表宝物的位置,其横坐标值与纵坐标值间以一个空白隔开。注意:输入之障碍物、军犬、宝物皆在不同位置。所有横、纵坐标值均为介于0(含)至99(含)之间的整数。
【输出格式】:
依行走之规则,若军犬可以从其位置走到宝物的位置时,请输出其使用之最少步数;如果军犬无法到达宝物的位置,请输出字符串“impossible”。
【输入样例】:
4
3 6
4 5
5 4
6 3
3 3
7 5
2
1 1
0 2
0 1
4 3
【输出样例】:
2
impossible