#icpc2013summerday3f. [icpc2013summer_day3_f]Phutball

[icpc2013summer_day3_f]Phutball

负躁嫉妒的Ikuta君最近对玩围棋盘游戏非常着迷。

然而,由于无法打败朋友在围棋和五子棋中,他决定接受特训,学习一种不太知名的游戏Phutball。

这个游戏非常复杂,因此他决定首先特训自己,以判断自己是否能在自己的回合中取得胜利并结束游戏。

游戏的胜利条件如下:

  • 白棋不能跳到黑棋所放置的位置上。
  • 使用棋盘的中央部分 19×1519 \times 15
  • 想要确定胜利条件的棋盘状态会给出一个白棋和若干黑棋的布局。
  • “目标区域”指的是棋盘的底部或者指下方(参见下图)。
  • 如果将白棋移到目标区域,则取得胜利。
  • 为了取得胜利需要进行以下操作:
    • 白棋可以进行一次或多次的跳跃。
    • 跳跃时,白棋可以跳过相邻8个方向(上、下、左、右以及斜上、斜下)的黑棋之一。
    • 不能跳跃到没有相邻黑棋的方向。
    • 每次跳跃后,所跳过的黑棋会从棋盘上移除。
    • 跳跃后的白棋必须位于目标区域或者棋盘上。
    • 即使有两个或更多相邻的黑棋,也可以跳跃正好跨过它们。
    • 白棋不能跳到黑棋所放置的位置上。(在跳跃的方向上必须连续存在黑棋)

Phutball_example

上面的例子中,圆圈所示的地方可以跳跃,都是目标区域。但是,叉叉所示的地方不是目标区域,也不在棋盘内部,因此无法跳跃。

你的任务是帮助Ikuta君进行特训,编写一个程序来确定是否可以达到目标,并给出达到目标的最小跳跃次数。

输入

输入为一个 19×1519 \times 15 的棋盘,由"."、"O"和"X"组成的字符矩阵。每一行具有15个字符。

  • "." 表示空白。
  • "O" 表示白棋。
  • "X" 表示黑棋。

约束条件

  • 黑棋的数量不超过20个。
  • 只会有一个白棋。
  • 输入状态不会是已经取得胜利的状态。

输出

如果能够达到目标,输出最少的跳跃次数。否则,输出-1。

样例输入1

...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
......O........
......X........

样例输出1

1
  • 白子可以通过跳跃一次黑子来达到目标。

样例输入2

...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
......O........
...............

样例输出2

-1
  • 白子无法移动,因此无法达到目标。

样例输入3

...............
...............
...............
...............
...............
...............
...............
...............
...........O...
............X..
.............X.
.............X.
.............X.
...............
..............X
.........X.....
.............X.
......X....X..X
.....X.X.XX.X..

样例输出3

6
  • 只需要进行6次跳跃就可以达到目标。

样例输入4

...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
.....XX........
.....XXXO......
......X........

样例输出4

4