カーペット (Carpet)
면접 대비시간 제한2초메모리 제한1024 MB
H×W 격자에서 말이 상하좌우로 인접한 다른 색 칸으로만 이동할 수 있을 때, 왼쪽 위에서 오른쪽 아래까지 가는 최소 이동 횟수를 구하고 불가능하면 -1을 출력한다.
문제
オシャレ好きのビ太郎は,カーペットを新調した.カーペットは縦 H 行,横 W 列のマス目状に区切られた長方形の形をしており,各マスは白か黒のいずれかの色で塗られている.カーペットの上から i 行目,左から j 列目 (1 ≦ i ≦ H,1 ≦ j ≦ W) にあるマスの色は,文字列 Si の j 文字目が . のとき白色,# のとき黒色である.
ビ太郎は,カーペットの最も左上のマスに駒を置き,以下の操作を何回か行うことで,その駒をカーペットの最も右下のマスに到達させるという遊びを思いついた.
- 駒が置かれているマスと色が異なり,かつ上下左右に隣接するマスを
1つ選び,そのマスに駒を移動させる.
ビ太郎は,到達までの操作回数をなるべく少なくしたい.ただし,カーペットの模様によっては到達させられないかもしれない.
カーペットの模様の情報が与えられたとき,操作を繰り返すことで左上のマスから右下のマスに駒を到達させることが可能かを判定し,可能ならば操作回数の最小値を求めるプログラムを作成せよ.
입력
入力は以下の形式で標準入力から与えられる.
H W
S1
S2
:
SH
출력
操作を繰り返すことで左上のマスから右下のマスに駒を到達させることが可能な場合は操作回数の最小値を,不可能な場合は -1 を,標準出力に 1 行で出力せよ.
제한
1 ≦ H ≦ 500.1 ≦ W ≦ 500.(H, W) ≠ (1, 1).Siは長さWの文字列である (1 ≦ i ≦ H).Siの 各文字は.または#である (1 ≦ i ≦ H).H, Wは整数である.