寻找最后之作II
题号:NC21519
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

“御坂御坂想去找那个大姐姐玩,御坂御坂拍着桌子提出了自己的计划!”。

就在一方通行接受爱华斯的建议,带着最后之作前往俄罗斯,寻找“完全不同的法则”时。最后之作又双叒叕跑掉了。一方通行十分无奈,但是自己已经年老体衰,无法再次徒步追赶最后之作,于是只能求助黄泉川老师派出驱动铠找到最后之作。可是破屋偏逢连夜雨,驱动铠的程序出了一些问题,本来驱动铠是根据“0 1 2 3”来判断前进方向的(0 1 2 3分别只对应“上”、“下”、“左”、“右”中的一种方向),可是由于故障,现在无法得知他们分别对应的是哪个方向,只能从控制面板中看到具体的操作指令。一方通行非常着急,希望你能帮他判断一共有几种不同的对应方案,使得驱动铠根据操作指令运行可以找到最后之作。

输入描述:

第一行有两个正整数n,m(2<=n,m<=50)。n地图的行数,m为地图的列数。

接下来的n行中,每行有m个字符,“.”代表可以通行,“#”代表墙,驱动铠撞到墙上就会损坏无法继续前进,“S”代表驱动铠起点,“E”代表最后之作的位置。

最后一行为一个只由0 1 2 3组成的字符串(长度小于等于100)为驱动铠操作指令。

输出描述:

输出一个整数,为可以找到最后之作的情况数。
示例1

输入

复制
5 6
.....#
S....#
.#....
.#....
...E..
333300012

输出

复制
1

说明

显然只有0对应下,1对应左,2对应上,3对应右的对应方案下,驱动铠可以找到最后之作。
示例2

输入

复制
5 3
...
.S.
###
.E.
...
3

输出

复制
0

说明

显然,没有一种方案可以让驱动铠在找到最后之作前不撞到墙上。

备注:

驱动铠不一定非要执行完所有指令,只要找到最后之作就可以完成工作。