[Baltic2014]portals

时间限制:40s      空间限制:256MB

题目描述

给出一张四连通的网格图,'#'代表墙,'.'代表空地,'S'代表出发点,'C'代表目的地,地图四周都是墙,求S到C的最短路。
走的时候可以向上下左右中的某个方向发射奇怪的东西(portals),portals会贴在发射方向的墙上。
地图上只允许同时存在两个portals,如果已经发射了两个再发射第三个,那么你需要在之前的那两个中的选一个使它消失。
两个portals可以存在于一块墙的两面,但不能存在于一块墙的同面。
当你身边是墙且那块墙上有面向你的portals时,你可以走进那个portals,从另一个portals出来。
相邻两点距离为1,走portals距离也为1


输入格式

第一行2个数R,C,表示矩形的长和宽
接下来R行,每行一个长为C的字符串,表示这张图


输出格式

输出一行表示答案


样例输入

4 4
.#.C
.#.#
....
S...

样例输出

4

提示

对于100%的数据 1 ≤ R ≤ 1000, 1 ≤ C ≤ 1000.
保证有解


题目来源

没有写明来源