在 Rat-O-Matic 机器人取得巨大成功后(如果你喜欢长篇故事,请参阅题目“I”),你被提升为 Rapid City Dynamics 公司乌拉尔分公司的首席执行官。受当地传统的启发,你决定制造一种非常特殊的机器人,名为 Robotobor!
Robotobor 可以在一个由 $n \times m$ 个单元格组成的矩形网格上移动。有些单元格是障碍物,机器人无法进入。每一秒,机器人都会移动到与当前单元格共享一条边的相邻单元格。
机器人的移动由程序控制。程序由零行或多行组成。每一行都是一个非空的字符字符串。每个字符都是以下之一:“U”(上)、“D”(下)、“L”(左)或“R”(右)。每个字符表示机器人必须向相应方向移动到相邻单元格。程序按行执行,每一行从左到右执行。
当且仅当满足以下条件时,该程序被认为是有效的: 在程序执行过程中,机器人不会进入障碍单元格,也不会离开网格范围。 每一行的长度最多为 100 个字符。 * 每一行都是一个回文串,即从右向左读与从左向右读相同(乌拉尔传统,就是这么狂野)。
你想要找到一个有效的程序,使机器人从单元格 $S$ 移动到单元格 $F$,且该程序包含的行数尽可能少。注意,不需要最小化程序的总长度。你能再次取得成功吗?
输入格式
第一行包含整数 $n$ 和 $m$,表示网格的行数和列数($1 \le n, m \le 50$)。
接下来的 $n$ 行描述了网格。每一行包含 $m$ 个字符。每个符号要么是“.”(空单元格),要么是“#”(障碍单元格),要么是“S”(起始单元格),要么是“F”(目标单元格)。你可以假设起始单元格和目标单元格不是障碍物。保证网格中恰好包含一个“S”和一个“F”。
输出格式
如果没有满足所有条件的程序,则输出仅包含数字 $-1$。
否则,输出你找到的程序。第一行必须包含行数 $k$,该值必须尽可能小。接下来的 $k$ 行必须包含程序本身。如果有多种可能的答案,输出其中任意一个即可。
样例
样例输入 1
3 5 S.... .#... ..#F.
样例输出 1
2 RR DRD
样例输入 2
2 2 F# #S
样例输出 2
-1