一个机器人被困在星际飞船的残骸中。残骸的某处有一个传送器,可以将可怜的机器人带到安全地带。
飞船正在沿所有轴失控旋转。附近的一颗恒星照亮了残骸。飞船还配备了人工重力发生器。无论飞船的方向如何,人工重力总是将机器人拉离恒星。
机器人配备了太阳能电池板,必须依靠太阳能才能在残骸中移动。当残骸的一部分遮挡住阳光时,机器人就无法移动。然而,机器人在每次移动后都会将自己锚定,不会有乱撞或掉入太空虚空的风险。
残骸及其周围区域由一个大小为 $m \times n \times p$ 的三维网格 $a$ 表示。每个单独的方块要么是飞船的一部分,要么是真空。飞船的方块可能是不连续的。
机器人最初锚定在飞船的一块碎片上。机器人可以自行选择何时移动,以及何时等待阳光从方便的方向照射过来。
更正式地说,重力可以将机器人沿 3 个轴中每个轴的 2 个方向(共 6 个方向)拉动。如果从该单元格沿重力的相反方向没有残骸,则该单元格被阳光照亮。在进行每次移动之前,机器人可以有效地选择重力拉动的方向。在进行移动时,起始位置和目标位置必须同时被阳光照亮。
允许进行以下移动:(在下图中,光线总是从上方照射;蓝色方块(或黑白打印中的深色方块)代表机器人,橙色方块(或浅色方块)是可能的目标位置)
在地面上移动 如果机器人停在一个方块上,它可以移动到相邻的位置,前提是该位置处于相同的高度。 机器人不能对角移动。目标位置也必须被阳光照亮。
跳下悬崖 机器人可以从高处迈出一步,随后向下坠落。对坠落的长度没有限制。
机器人不能坠落到太空的虚空中,也不能坠落到未被照亮的位置。
- 向下坠落 如果机器人被阳光照亮,并且发现自己悬空,它可以向下坠落。如果重力方向发生了改变,这种情况就会发生。
机器人不能坠落到太空的虚空中。
目标是尽可能以最少的移动次数到达传送器。为了使传送器工作,机器人必须牢固地锚定在飞船上。换句话说,机器人必须在一次有效移动结束时位于传送器处,而仅仅通过它坠落是无效的。传送器不会遮挡阳光或机器人的移动。
输入格式
第一行包含三个整数 $m, n, p$ ($1 \le m, n, p \le 500$)。
飞船及飞船周围区域由 $p$ 个块描述。 第 $k$ 个块描述了位于第 $k$ 层高度的方块。每个块由 $n$ 行组成。 第 $k$ 个块的第 $i$ 行由 $m$ 个符号组成。第 $j$ 个符号称为 $a_{ijk}$。
- 如果 $a_{ijk}$ 是 “*”,则它是一个实心块。
- 如果 $a_{ijk}$ 是 “-”,则它是一个空块。
- 如果 $a_{ijk}$ 是 “R”,则该块包含机器人。保证只有一个这样的块。保证机器人连接到一个实心块上。
- 如果 $a_{ijk}$ 是 “T”,则该块包含传送器。保证只有一个这样的块。
输出格式
打印到达传送器所需的最少移动次数,如果传送器不可达,则输出 $-1$。
样例
样例输入 1
2 5 1 R- *- *- *T **
样例输出 1
1
样例输入 2
3 2 1 R-T ***
样例输出 2
2
样例输入 3
3 3 1 -R- -*- -T-
样例输出 3
-1
样例输入 4
5 4 2 -R--- -**** -**** -**** ----- ----- *T--- ----*
样例输出 4
5