J. [L2-2] 交替迷宫

内存限制:1024 MiB 时间限制:6000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

在遥远的艾尔德兰大陆,有一座被遗忘的古代遗迹,名为“交替迷宫”。传说这座迷宫是由一位痴迷于节奏与对称的远古大法师所建,他用自己的魔力将迷宫的法则刻入了时空之中。无数年来,无数冒险者试图闯入其中寻找传说中的“永恒宝石”,但鲜有人能活着出来,因为迷宫的移动规则诡异而严苛。

你是一位名叫艾琳的年轻魔法学徒,为了寻找能够治愈家乡瘟疫的宝石,毅然踏上了这段旅程。在你面前,迷宫呈现为一个巨大的矩形网格,由 列组成,每个格子要么是安全的空地,要么被坚硬的魔法岩块(障碍物)占据。根据古老的羊皮卷轴记载,起点处会有一个发光的法阵(标记为 S),而宝石就藏在终点处的祭坛上(标记为 E)。其余空地为普通石板(.),而无法通行的岩块则用 * 表示。

然而,这座迷宫最可怕的地方在于它的移动法则:你必须严格交替进行纵向移动(上下)和横向移动(左右),就好像你在跳一种神秘的舞步。第一次移动的方向你可以自由选择,但之后每一步都必须与上一步的方向垂直。例如,如果你第一步向上走了一格,那么第二步只能向左或向右;如果你第二步向右,那么第三步又只能向上或向下,以此类推。如果你试图连续两次向同一方向移动,脚下的石板就会瞬间崩塌,将你吞噬。

幸运的是,你并不是毫无准备。在出发前,你的导师给了你 枚“破障符文”。每当你使用一枚符文,你可以选择任意一个格子,如果那里有岩块,它就会永远消失,变成可通行的空地。你可以在任何时刻使用这些符文,无论是在移动前、移动中还是移动后。但符文数量有限,必须谨慎使用。

现在,你站在起点法阵上,望着远处祭坛上若隐若现的光芒。你需要判断是否有可能通过一系列符合规则的移动(加上符文的帮助)到达终点。如果可能,你还需要知道最少需要移动多少步(使用符文不算步数)。因为每多一步,迷宫中隐藏的陷阱就会多一分危险。

请你帮助艾琳计算这个最小的步数,或者告诉她这是不可能的任务。

输入格式

第一行,包含三个整数 ,分别表示迷宫的行数、列数以及可使用符文的次数。

接下来 行,每行是一个长度为 的字符串,表示迷宫的布局。字符串由以下字符组成:

  • S:起点(有且仅有一个);
  • E:终点(有且仅有一个);
  • .:空地;
  • *:岩块(障碍物)。

输出格式

如果无法从起点到达终点,输出 -1。否则输出一个整数,表示最少移动步数。

样例

输入样例 1
2 3 1
E.S
**.
输出样例 1
4
输入样例 2
8 10 2
...*.***..
S...*.****
...*.****.
**...*.*.E
.*......**
*.*......*
....*.....
*.**...*..
输出样例 2
17

数据范围与提示