#P15487. [IOI 1998] Camelot

[IOI 1998] Camelot

说明

数个世纪前,亚瑟王与圆桌骑士每逢新年都会相聚庆祝他们的情谊。为纪念这些事件,现设计一款单人棋盘游戏,其中一枚国王棋子和若干骑士棋子被随机置于不同的方格。

棋盘是一个 8×88\times 8 的方格阵列。

如图 2 所示,国王可移动至任意相邻方格(例如从 \bullet\circ),前提是不超出棋盘边界。

如图 3 所示,骑士可移动至符合规则的位置(比如从 \bullet 跳到 \circ),只要不超出棋盘边界即可。

在游戏过程中,玩家可在同一方格放置多枚棋子。棋盘方格假定足够大,确保棋子自由移动时互不阻碍。

玩家的目标是通过移动棋子,在尽可能少的步数内将所有棋子聚集到同一方格。为此,他必须按照上述规则移动棋子。此外,当国王与一个或多个骑士处于同一方格时,玩家可选择从此将国王与其中一名骑士共同移动(此后视为一个骑士棋子),直至最终聚集点。骑士与国王共同移动的行为计为一步。

任务

编写一个程序,计算玩家完成聚集所需的最少移动步数。

输入格式

给出初始棋盘布局,以字符串形式编码。该字符串包含最多 6464 个不同的棋盘位置:第一个位置表示国王所在位置,其余位置表示骑士的位置。每个位置由字母-数字对表示:字母表示棋盘横坐标,数字表示棋盘纵坐标。

输出格式

必须包含一行,其中有一个整数,表示玩家完成聚集所需执行的最小移动步数。

D4A3A8H1H8
10

提示

骑士数量范围介于 006363 之间。