135. 皇后移动的最小步数

内存限制:256 MB 时间限制:1.000 S

题目描述

有一个 n 行 m 列的棋盘,有一些格子是障碍物不能通过。

小红控制一个皇后在从左上角出发,每次移动她可以控制皇后进行以下三种方式中的一种:


1.向右移动若干个格子。

2.向下移动若干个格子。

3.向右下移动若干个格子。


用数学语言描述,当前的坐标在 (x, y) 时,每次移动可以到 (x + k, y) 或 (x, y + k) 或 (x + k, y + k) 其中 k 为任意正整数。移动的前提是,路径上没有障碍物。 小红想知道,皇后从左上角移动到右下角,最少要移动多少步?

输入

第一行输入两个正整数 n 和 m(1 <= n,m <= 2000),代表行数和列数。 

接下来的 n 行,每行输入一个长度 m 的字符串,用来表示棋盘。

其中 "." 代表可以通过的位置,"*" 代表障碍物。 保证左上角和右下角都不是障碍物。

输出

如果无法到达,请输出-1。 

否则输出一个整数,代表最少的移动次数。

样例输入 复制

4 5
...*.
*..**
.....
.....

样例输出 复制

2