문제
비타로는 인테리어를 위하여 카펫을 구매했다. 카펫은 세로
비타로는 카펫의 가장 왼쪽 상단 칸에 조각을 놓고 다음 조작을 여러 번 실시하여 그 조각을 카펫의 가장 오른쪽 아래 칸에 도달시키는 놀이를 생각했다.
조각이있는 칸과 색상이 다르며 상하 좌우에 인접한 칸을 하나 선택 하고 그 칸으로 조각을 이동시킨다.
비타로는 가장 오른쪽 아래 칸에 도달하는데 필요한 조작 횟수를 가능한 한 적게 하고 싶다. 그러나 카펫의 모양에 따라 도달 할 수 없을 수도 있다.
카펫 모양의 정보가 주어지면 조작을 반복하여 왼쪽 위의 칸에서 오른쪽 하단의 칸에 조각을 도달시킬 수 있는지를 판정하고, 가능하면 조작 횟수의 최소값을 구하는 프로그램을 작성하자.
입력
입력은 다음 형식으로 표준 입력에서 제공됩니다.
:
[제한]
출력
조작을 반복하는 것으로 좌상의 매스로부터 우하의 매스에 조각을 도달시키는 것이 가능한 경우는 조작 횟수의 최소치를, 불가능한 경우를, 표준 출력에 1행으로 -1 출력 하라
부분문제
번호 | 점수 | 조건 |
---|---|---|
#1 | 4점 | H = 1 |
#2 | 14점 | H ≤ 5 , W ≤ 5. |
#3 | 24점 | H ≤ 30 , W ≤ 30. |
#4 | 58점 | 추가 제약은 없다. |
예제1
4 5
...#.
#####
...#.
#.###
9

왼쪽의 예에서는 9 회의 조작으로, 오른쪽의 예에서는 13 회의 조작으로, 좌상단 칸에서 우하의단 칸에 조각을 도달시키는 것이 가능하다.
9 회보다 적은 조작 횟수로 도달하는 것은 불가능하기 때문에 9를 출력한다.
이 입력 예제는 작은 문제 2, 3, 4 의 제약 조건을 충족합니다.
예제2
3 3
...
...
...
-1
처음부터 조작을 할 수 없는 경우도 있다. 이 경우 조각을 오른쪽 하단의 칸에 도달 할 수 없으므로 -1 출력합니다.
이 입력 예제는 작은 문제 2, 3, 4 의 제약 조건을 충족합니다.
예제3
1 5
.#.#.
4
이 입력 예제는 모든 작은 문제의 제약 조건을 충족합니다.
예제4
5 5
###.#
.#...
.#..#
.####
##..#
12
이 입력 예제는 작은 문제 2, 3, 4 의 제약 조건을 충족합니다.
예제5
7 5
.#.##
##...
.#.##
.###.
##.#.
...#.
##.#.
12
이 입력 예는 작은 문제 3, 4 의 제약 조건을 충족합니다.