手动机
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一张 nm 列的方格图,我们使用 (i,j) 表示网格中从上往下数第 i 行和从左往右数第 j 列的单元格。每个方格要么是可以通过的空方格(使用 \texttt{`.'} 表示),要么是不可通过的墙方格(使用 \texttt{`\#'} 表示),你可以沿着空方格上下左右随意移动:从 (x,y) 向上移动一格即抵达 (x-1,y)、向下移动一格即抵达 (x+1,y)、向左移动一格即抵达 (x,y-1)、向右移动一格即抵达 (x,y+1),但是不能移动到墙方格上或者移动出地图。

\hspace{15pt}0 秒时我们在起点 (1, 1) 放上一个机器人,这个机器人会按照一个长度为 |s| 的行进指令串 s = s_0 s_1 \cdots s_{|s|-1} 进行移动,每个指令为 \texttt{U}\texttt{D}\texttt{L}\texttt{R} 的某一个,依次代表向上、下、左、右移动。机器人在第 t 秒时接受到的指令为 s_{(t \bmod |s|)}

\hspace{15pt}你可以控制这个机器人行进,具体来说,对于每一秒,你可以从以下三种操作中选择一种执行(不论执行哪种操作,都算用去 1 秒,指令序号也随时间前移,即若当前时刻为 t,在本秒结束后进入时刻 t+1):
\hspace{23pt}\bullet\,让当前机器人按照当前指令方向进行一步移动;
\hspace{23pt}\bullet\,让当前机器人在原地停留一秒;
\hspace{23pt}\bullet\,忽略当前指令,手动将机器人向 \texttt{U}\texttt{D}\texttt{L}\texttt{R} 的某个方向进行一次移动。

\hspace{15pt}你的目标是将机器人移动至终点 (n, m)(当然,任何时候都不能移动到障碍上或者移动出地图)。现在询问:
\hspace{23pt}\bullet\,最少需要进行多少次手动移动才能够使得机器人可以从 (1, 1) 走到 (n, m)
\hspace{23pt}\bullet\,在最小化手动移动次数的前提下,最早在什么时候能够移动到 (n, m)
\hspace{15pt}保证起点和终点一定为空方格,你始终可以通过以上操作找到一条从起点出发到达终点的可行路径。

输入描述:

\hspace{15pt}第一行输入两个整数 n,m \left(1\le n, m \le 10^3\right),表示地图的行数、列数。
\hspace{15pt}第二行输入一个长度为 |s|,仅由 \texttt{U}\texttt{D}\texttt{L}\texttt{R} 组成的字符串 s \left(1\le |s| \le 10^5\right),表示机器人的行进指令。
\hspace{15pt}此后 n 行,第 i 行输入一个长度为 m,仅由 \texttt{`.'}\texttt{`\#'} 组成的字符串 a_{i,1}a_{i,2}\cdots a_{i,m},表示地图第 i 行的状态。

输出描述:

\hspace{15pt}在一行上输出两个整数,表示答案。
示例1

输入

复制
5 6
DDDLDUUDLLL
.#..#.
..#...
#...#.
..#...
....#.

输出

复制
5 12

说明

\hspace{15pt}在这个样例中,其中一种可能的最优走法如下(其中字符 \texttt{A-M} 分别代表机器人第 0~12 秒所在的位置,如果停在原地则多个字符只保留最早出现的字符):
\hspace{50pt}\begin{array}{cccccc}<br />{\color{orange}{\texttt{A}}} & \texttt{\#} & \texttt{.} & \texttt{.} & \texttt{\#} & \texttt{.} \\<br />{\color{orange}{\texttt{B}}} & {\color{orange}{\texttt{C}}} & \texttt{\#} & \texttt{.} & \texttt{.} & \texttt{.} \\<br />\texttt{\#} & {\color{orange}{\texttt{D}}} & {\color{orange}{\texttt{E}}} & {\color{orange}{\texttt{G}}} & \texttt{\#} & \texttt{.} \\<br />\texttt{.} & \texttt{.} & \texttt{\#} & {\color{orange}{\texttt{I}}} & {\color{orange}{\texttt{J}}} & {\color{orange}{\texttt{K}}} \\<br />\texttt{.} & \texttt{.} & \texttt{.} & \texttt{.} & \texttt{\#} & {\color{orange}{\texttt{M}}}<br />\end{array}
\hspace{15pt}上面每秒的操作逻辑为 \texttt{DRDRXRXDRRXD},其中 \texttt{X} 表示停在原地。
示例2

输入

复制
6 5
UUDRRDDRRDL
...#.
.#...
...#.
.#...
..#.#
#....

输出

复制
0 19