벽 한 번 제거 최단 경로
N×M 격자에서 (1,1)을 출발해 (N,M)에 도달하는 최단 경로를 구하라.
0인 칸은 이동 가능하고 1인 칸은 벽이다.
경로 중 단 한 번에 한하여 벽 칸을 통과할 수 있다.
최단 경로의 칸 수를 출력하고, 도달이 불가능하면 -1을 출력하라.
입력 설명
첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000)이 주어진다.
다음 N개의 줄에 M개의 숫자로 맵이 주어진다.
(1, 1)과 (N, M)은 항상 0이라고 가정하자.
출력 설명
첫째 줄에 최단 거리를 출력한다. 불가능할 때는 -1을 출력한다.
예제 입력 1
6 4
0100
1110
1000
0000
0111
0000
예제 출력 1
15
예제 입력 2
4 4
0111
1111
1111
1110
예제 출력 2
-1