#P2415. Hike on a Graph

Hike on a Graph

描述

“Hike on a Graph” 是一种在绘制无向图的棋盘上进行的游戏。该图是完整的,并且具有所有循环,即对于任意两个位置,它们之间只有一个箭头。箭头是彩色的。有三个玩家,他们每个人都有一个棋子。在游戏开始时,这三个块位于图表上的固定位置。反过来,玩家可以进行移动。移动包括将自己的棋子沿着箭头移动到棋盘上的新位置。对此施加了以下限制:棋子只能沿着与两个对手棋子之间的箭头相同颜色的箭头移动。

在六十年代(“make love not war”)出现了单人游戏的变体。在这个变体中,一个人移动所有三个棋子,不一定一个接一个,但当然一次只能移动一个。这个游戏的目标是用尽可能少的步数把所有棋子放到同一个位置。对于给定的棋盘布局和起始位置,找出将所有三个棋子放到同一位置所需的最小移动次数。

输入

输入包含多个测试用例。每个测试用例都以数字 n 开头。Input 以 n=0 终止。否则,1<=n<=50。然后跟着三个整数 p1、p2、p3,其中 1<=pi<=n 表示游戏棋子的起始位置。箭头的颜色接下来以空格分隔的小写字母的 m×m 矩阵的形式给出。元素 mij 表示位置 i 和 j 之间的箭头的颜色。由于该图是无向的,因此您可以假设矩阵是对称的。

输出

对于单行输出的每个测试用例,将所有三个棋子放到同一位置所需的最小移动次数,或者如果给定的棋盘和起始位置不可能,则输入“不可能”一词。

输入数据 1

3 1 2 3
r b r
b b b
r b r
2 1 2 2
y g
g y
0

输出数据 1

2
impossible