P15487 [IOI 1998] Camelot

题目描述

数个世纪前,亚瑟王与圆桌骑士每逢新年都会相聚庆祝他们的情谊。为纪念这些事件,现设计一款单人棋盘游戏,其中一枚国王棋子和若干骑士棋子被随机置于不同的方格。 **棋盘**是一个 $8\times 8$ 的方格阵列。 ![](https://cdn.luogu.com.cn/upload/image_hosting/jxmek9kb.png) 如图 2 所示,**国王**可移动至任意相邻方格(例如从 $\bullet$ 到 $\circ$),前提是不超出棋盘边界。 ![](https://cdn.luogu.com.cn/upload/image_hosting/yxuxrv8s.png) 如图 3 所示,**骑士**可移动至符合规则的位置(比如从 $\bullet$ 跳到 $\circ$),只要不超出棋盘边界即可。 ![](https://cdn.luogu.com.cn/upload/image_hosting/7f46i9pb.png) 在游戏过程中,玩家可在同一方格放置多枚棋子。棋盘方格假定足够大,确保棋子自由移动时互不阻碍。 玩家的目标是通过移动棋子,在尽可能少的步数内将所有棋子聚集到同一方格。为此,他必须按照上述规则移动棋子。此外,当国王与一个或多个骑士处于同一方格时,玩家可选择从此将国王与其中一名骑士共同移动(此后视为一个骑士棋子),直至最终聚集点。骑士与国王共同移动的行为计为一步。 ### 任务 编写一个程序,计算玩家完成聚集所需的最少移动步数。

输入格式

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

输出格式

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

说明/提示

骑士数量范围介于 $0$ 与 $63$ 之间。