Nhốt mèo vào mê cung

View as PDF

Submit solution

Points: 0.10
Time limit: 1.0s
Memory limit: 64M
Input: stdin
Output: stdout

Author:
Problem type

Câu chuyện trong buổi tối hôm nay kể về một em mèo mướp tội nghiệp. Vì ghen tị với độ dễ thương của em mèo nên vào một ngày nọ, mụ phù thủy độc ác đã nhốt em vào mê cung hình vuông kích thước ~n \times n~ mà khó tìm được lối thoát. Các vị trí trong mê cung được chia thành các ô vuông, mỗi ô vuông có thể là khoảng trống, hoặc là cạm bẫy. Em mèo được đặt vào một ô nào đó, xung quanh em có thể có toàn là cạm bẫy. Do hoang mang nên em mèo khi bắt đầu chạy thì chỉ biết chạy thẳng theo 1 trong các hướng: trái, phải, lên, xuống chứ không biết rẽ lần nào nữa. Hãy tính xem em mèo có thoát ra được mê cung hay không, với số bước ít nhất là bao nhiêu nhé? Chú ý rằng nếu em mèo đang ở biên của mê cung thì em chỉ cần nhảy thêm ~1~ bước là thoát khỏi, vì mê cung không có tường.

Input

Dòng đầu tiên gồm số nguyên dương ~n~ với ~3 \le n \le 100.~ Trong các dòng tiếp theo là mô tả cho thông tin các ô trong mê cung, ký hiệu ô trống bởi dấu O còn ô có cạm bẫy là X, chỉ có đúng một ô chứa ký hiệu M, chỉ vị trí của em mèo mướp.

Output

Số bước ngắn nhất để thoát khỏi mê cung nếu chỉ chạy thẳng, hoặc in ra ~-1~ nếu không có cách nào thoát khỏi.

Sample input 1

3
XOX
OMX
OXX

Sample output 1

2

Sample input 2

3
OXO
XMX
OXO

Sample output 2

-1

Sample input 3

4
OOXX
XOMX
OXOX
XXXX

Sample output 3

-1

Giải thích. trong VD1, em mèo có thể đi thẳng lên hoặc đi rẽ sang trái thì đều thoát được; còn trong VD2, xung quanh em đều là cạm bẫy nên không có lối thoát; trong VD3, em mèo dù có một cách thoát nhưng do em phải rẽ ít nhất một lần mới ra được và em cũng không thể thoát.


Comments

Please read the guidelines before commenting.


There are no comments at the moment.