#2698. 秘密通道

秘密通道

题目描述

有一副n×m\red{n\times m}的地图,有n×m\red{n\times m}块地,每块是下列四种中的一种: 墙:用 #\red{\#}表示,墙有4\red{4}个面,分别是前面,后面,左面,右面。 起点:用C\red{C}表示,为主角的起点,是一片空地。 终点:用F\red{F}表示,为主角的目的地,是一片空地。 空地:用 . 表示。 其中除了墙不能穿过,其他地方都能走。

主角有以下3\red{3}种操作:

1.\red{1.}移动到相邻的前后左右的地方,花费一个单位时间。

2.\red{2.}向前后左右其中一个正方向发射子弹,子弹沿直线穿过,打在最近的一堵墙的一面,然后墙的这面就会形成一个开口通往秘密通道。同一时间最多只能有两个开口,若 出现有3\red{3}个开口,出现时间最早的开口会立即消失。该操作不用时间。

3.\red{3.}若已经有两个开口,而且相邻的位置是墙,所正对的墙面也刚好有开口,主角就能从这个开口进去,进入秘密通道,从另外一个开口跳出来,跳到开口正对的空地,这 个过程花费一个单位时间。

地图四周都是墙,问主角最少用多少时间从C\red{C}走到F\red{F}

输入格式

第一行输入两个正整数n\red{n,}m\red{m}

接下来n\red{n}行,每行m\red{m}个字符描述地图。

输出格式

输出1\red{1}个整数,表示最短时间完成路途。如果无解输出nemoguce\red{nemoguce}

样例

输入样例1

4 4

####

#.F#

#C.#

####

输出样例1

2

输入样例2

6 8

########

#.##..F#

#C.##..#

#..#...#

#.....##

########

输出样例2

4

输入样例3

4 5

#####

#C#.#

###F#

#####

输出样例3

nemoguce

提示

样例2\red{2}解释

总共用到8\red{8}次操作,时间之和为4\red{4}。如下图所示

1.\red{1.}向左射一枪,在(3,1)\red{(3,1)}的右面出现开口。

2.\red{2.}向下射一枪,在(6,2)\red{(6,2)}的上面出现开口。

3.\red{3.}向左从(3,1)\red{(3,1)}进入秘密通道,从(6,2)\red{(6,2)}中出来,到达(5,2)\red{(5,2)}。用1\red{1}单位时间。

4.\red{4.}向右射一枪,在(5,7)\red{(5,7)}的左面出现开口,(3,1)\red{(3,1)}右面的开口消失。

5.\red{5.}走进(6,2)\red{(6,2)}的开口,出来到(5,6)\red{(5,6)}。用1\red{1}单位时间。

6.\red{6.}向上射一枪,在(1,6)\red{(1,6)}的下面出现开口。

7.\red{7.}经过秘密通道,走到(2,6)\red{(2,6)}。用1\red{1}单位时间。

8.\red{8.}走到终点。用1\red{1}单位时间。 img

数据范围

对于50%\red{50\%}的数据,4\red{4≤} n,m\red{n,m≤} 15\red{15}

对于100%\red{100\%}的数据,4\red{4≤} n,m\red{n,m≤} 500\red{500}