#1653. 圆桌骑士

圆桌骑士

题目描述

很多世纪以前,阿瑟王和他的圆桌骑士常在每年的元旦庆祝他们的友谊。我们用一个单人玩的棋盘游戏去纪念这个史实:一个国王和多个骑士被随机放在棋盘的不同方格上。棋盘是一个8×8\red {8\times8}的正方形:

imp

只要不越出棋盘,国王就可移至与之相邻的方格内。如下图所示,国王可以由●跳至○。

imp

在棋局当中,选手可以在同一方格内摆放多个棋子(假设棋盘的方格足够大,任何棋子都不会成为其它棋子自由移动的障碍)。

选手的目标是在尽可能少的步数内把所有的棋子集中到同一方格内。为此他必须按前述方法去移动棋子。此外,当国王和一个或多个骑士处于同一方格内时,选手可以选择此后让国王跟一个骑士一同向聚会终点移动,就像移动单个骑士一样。 写出一个程序去计算选手要实现聚会所需的最少的移动次数。

输入格式

包括了以字符串表示的棋盘初始状态。该字符串包含了一串最多由64\red {64}个不同的棋子位置:首先是国王的位置,而随后是骑士们的位置。每个位置由一对字母数字表示,字母表示水平坐标,而数字表示棋盘垂直坐标。

输出格式

必须包含单一的一行,以一个正整数表示选手要实现聚会所需要最少的移动次数。

样例

输入样例

D4A3A8H1H8

样例解释

国王放在D4\red {D4},四个骑士分别放在A3A8H1\red {A3、A8、H1}H8\red {H8}

输出样例

10

提示

0\red {0≤}骑士数目63\red {≤63}