농부 존이 집 앞에 낡은 거울을 몇 개 내놓았는데, 늘 그렇듯 장난기가 발동한 소들이 그 거울을 몽땅 훔쳐 갔다.
소들은 N×M 칸짜리 직사각형 밭에 거울을 세워 두었다. (1≤N,M≤1000) 각 칸에는 마주 보는 두 꼭짓점을 잇는 양면 거울이 하나씩 놓여 있고, 놓이는 방향은 두 가지다. /는 왼쪽 아래 꼭짓점과 오른쪽 위 꼭짓점을 잇는 거울이고, \는 왼쪽 위 꼭짓점과 오른쪽 아래 꼭짓점을 잇는 거울이다.
어느 저녁, 소 베시가 레이저 포인터를 들고 거울 밭으로 나왔다. 베시는 밭 바깥에 서서 한 행이나 한 열을 따라 빔을 가로 또는 세로로 쏘고, 빔은 거울에 부딪히며 여러 번 반사된다. 거울이 모두 대각선으로 놓여 있어서 가로로 진행하던 빔은 반사되면 세로로 진행하고, 세로로 진행하던 빔은 반사되면 가로로 진행한다.
베시는 빔이 최대 몇 번 반사될 수 있는지 궁금하다. 거울 배치가 주어지면 그 횟수를 구하라. 빔이 같은 거울에 두 번 이상 부딪히면 부딪힌 횟수를 모두 센다.
첫째 줄에 두 정수 N과 M이 공백으로 구분되어 주어진다.
둘째 줄부터 N개의 줄에는 거울 밭의 한 행을 나타내는 / 또는 \ 문자 M개가 공백 없이 주어진다.
첫째 줄에 밭 바깥에서 출발한 가로 또는 세로 빔이 반사될 수 있는 최대 횟수를 정수 하나로 출력한다. 빔이 무한히 반사될 수 있으면 -1을 출력한다.
첫 번째 예제에서 베시가 가운데 열 위쪽에서 빔을 아래로 쏘면 빔은 세 번 반사된다.
두 번째 예제에서 가장 좋은 빔은 한 거울을 두 번 지나간다. 서로 다른 거울은 다섯 개지만 반사 횟수는 여섯 번이다.