Statistics

Problem Statement for "BrickPuzzle"

Problem Statement

NOTE: This problem statement contains images that may not display properly if viewed outside of the applet.

Howard Benson loves puzzles and is always eager to invent new ones. He has recently invented a new puzzle based on the old puzzles that involved placing various tetrominoes inside a rectangle. For this puzzle, Howard picked four kinds of tetrominoes and made pieces with their shapes. The player can use as many pieces of each kind as necessary. The pieces he made available are shown in the following image:



Another component of the puzzle is the board, which is a square grid composed of white and black cells. The objective of the game is to cover all the white cells by placing a minimum number of pieces on the board. There are many rules regarding the placement of the pieces:

  • The pieces may not overlap.
  • Every piece must lie completely inside the board.
  • The pieces must be aligned to the grid.
  • The orientation of each piece must be the same as the orientation in the picture above.
  • Black cells in the board may be covered if necessary.


For example, the following picture shows a board configuration and a solution using a minimum number of pieces:



You are given the board as a String[] board. The j-th character of the i-th element of board is 'X' if the cell at column j, row i is black and '.' if the cell is white. Return the minimum number of shapes that are required to cover all the white cells by following the aforementioned rules. If it is impossible to cover all the white cells following the rules, return -1.

Definition

Class:
BrickPuzzle
Method:
leastShapes
Parameters:
String[]
Returns:
int
Method signature:
int leastShapes(String[] board)
(be sure your method is public)

Constraints

  • board will contain between 1 and 22 elements, inclusive.
  • Each element of board will contain between 1 and 22 characters, inclusive.
  • All elements of board will contain the same number of characters.
  • Each element of board will contain only the characters '.' and uppercase 'X'.

Examples

  1. {"..X....", "..XXXXX"}

    Returns: 2

  2. {".X", "..", "X."}

    Returns: -1

    Note that the pieces cannot be rotated.

  3. {"..XX....", "....X..X", "XX..XXXX"}

    Returns: 4

  4. {"X..XXXX", "X.....X", "....XX.", "X......"}

    Returns: 5

    This is the example from the statement.

  5. {"......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................"}

    Returns: 121

  6. {"X.",".X","X."}

    Returns: -1

  7. {".","X",".",".",".","X",".",".","X",".",".",".","X","X"}

    Returns: -1

  8. {"XXXXXXXXX","XXXXXXXXX","XXXXX.XXX","XXXXXXXXX","XXXXXXXXX","XXXXXXXXX","XXXXXXXXX"}

    Returns: 1

  9. {"XXXXXX..XXXX.XX.X","XX.XXXX.XXXXX..X.",".X.XXX.XX.X.X.XXX"}

    Returns: 7

  10. {"X..X.X..XX","X.X.XXX..X","..X...XXXX","X.XXX.XXXX","X...X...X.","XX..X.XX.X","X....X.X.X","XXX....XX.","X...XX...."}

    Returns: 15

  11. {".........X","..X.X.....",".X.X......",".........X","..........","...X......","..........","....X.....","..........","...X......","..........",".........."}

    Returns: 30

  12. {"XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XX.XXXXXXX.XXXXXXXXX","XXXX.XXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXX.XXXXXXX","XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX","XX.XXXXXXXXXXXXX.XXX","XXXXXXXXXXXXXXXXXXXX"}

    Returns: 5

  13. {"XXXXXX.XX.","XXXXXXXXX.","XXXX.XXXXX","XXXXXXXXX.","XXXXXXXXXX",".XXXXXXXXX","XXXXXXXXXX","XXXXXXXXXX","XX.X.XX.XX","XXXXXXXXXX",".XXXX.XXXX","X.XXXXXXXX","XXXXXXXXXX",".XXXXXXXXX","XXXXXXXXXX","XXXXXXXX.X","XXX...XXXX"}

    Returns: 12

  14. {"XX.XX.XXX.X.XX","XXXXXXXXX.XXXX","XXXX..XX.XX.X.","XXX.X.XX.XXXXX",".X.XXX.XXXX.XX"}

    Returns: 9

  15. {"XXX......X","..XX...XXX",".X..X...X.","XXX.X.X.XX","X.X.X.X.XX","XXXX...XX.","XX.XX..XX."}

    Returns: 12

  16. {"...X.X.XXX.","X....XXXXX.",".X.....XX.X","..X.XXX..XX",".XXX..X.X..","X.XX.X..XX.",".X.X.XXX.XX","..XX.XX..XX",".....X..XX.","XXXX.XX.X..",".XXXXX.XX..","...XX.....X",".XXX.X.X.XX","XXX..X..X..","X.XX.XXX...","...X......X",".XX...XXXXX"}

    Returns: 34

  17. {"..XXX..",".XX.XXX","X..XXX.",".XXXXXX","X.X.X.X",".XXX.XX"}

    Returns: 8

  18. {"XX","XX","..","X.","XX","X.","..","X.","XX","XX","XX","XX","XX","XX",".X","XX"}

    Returns: 4

  19. {"X","X","X",".","X","X","X","X","X","X","X","X","X","X","X","X","X","X","X","X"}

    Returns: -1

  20. {"XXXXXX.X","XXXXXX.X","XXXXXXXX","X.XXXXXX","XXXXXXXX","XXXXXXXX","XXXXXXX.","XXXXX.X.","XXXXXXXX","XXXXXXXX"}

    Returns: 4

  21. {".......X.XX."}

    Returns: 3

  22. {"X..X..XX....."}

    Returns: 3

  23. {"...XX.XX........","X..XX....XX.XXX.",".X.X...X.X.XXXXX","XX........XXX...","...XXXX.XX..X...","..X.X.X.XX.XX...","X.XXXX.X.X..X...",".X.XXX..XX.XX.X.","..XX..X.X.....X.","XXX.X..X.XX.X.X.",".X....XX....XXX.",".X.XX..X...X....","XX....X.XX.....X","..XX.X...XX.....","X......XXXXXX...","....X.X..X.X.X..","......XXX.XX...X",".XXX...XX..X...X","X...X....XX..XX.","XX..X.XXXXXX...X"}

    Returns: 61

  24. {"XXXXXXXXXXXXXXXX","..XXX.XXX.XXXX.X","X.XXX.XXXXX.XXX.",".X.XXX..XXXXX.XX","XXX.XX...XX.XXXX","X.X.X..XXXX.XXX.","X.XX....XXXXXXXX","XX.XXXXXX...X.XX","XXXXXXXXXXXXX.X.",".XX.X.XXXX.X.X.X",".XX.XXXXXXX.XXXX","XX.XXXXX..XXXXXX",".XXX.XXXX..XXXX.","XXXX.XXX.XX.X.X."}

    Returns: 28

  25. {".XXXX.X..X.X..","XX.XX..XX..X.X","X.XX.X.X.XX..X","X.XXXXXXXXXXXX"}

    Returns: 8

  26. {"X...........","............","............",".........X..","X...........","............","....X.......",".X..........",".......X....",".....X......","............",".....X.....X",".....X..X..."}

    Returns: 39

  27. {"XX...XXXXXX","XXXXX.XX.XX","XXX......XX",".XX.X..X..X","X..X..XX...","XX...XXXX.X","XXX...XXXXX","...XX.XXX.X","X.X.XX..XXX","X.X.X.XXXX.",".X.X.XXXXX.",".X.X..X..X.",".XX.XX..X..","XXXX.XXXX.X","XXX..X..X.X","XX.XXX.XX.."}

    Returns: 27

  28. {"..X.....XX."}

    Returns: -1

  29. {"XX.X","XXXX","X.XX","XXXX","XXXX","XXXX","XXXX",".X.X","XXXX","X.XX","XXXX","X.XX","XX.X","XXXX","XXXX","XXXX","XXX.","XXXX"}

    Returns: 6

  30. {"X.XXXXXXXX","XXXXXXXXXX",".XXX.XXXXX","XXXXXXXXXX","X.XXXXXXXX","XXXXXXXXXX","XXXXXXXXX.","XXXXXXXXXX","XXXXX.XXXX","XXXXXXXXXX","XXXXXXXXXX","XXXXXXXXX.","XXXXXXXXX.","XXXXXXX.XX","XXXXXXXXXX","XX.XXXX.XX","XXXXX.XXXX"}

    Returns: 10

  31. {"...............","...............",".......X.......","...............",".............X.","...........X...","...............","...............","X..............",".........X.....","..........X....","...............","........X......"}

    Returns: -1

  32. {"..XX..X....X..","...XXX....X.X.","...X...X..XX..","..X..XXX..XX.X",".XXX.XX.X..XXX","....XXXX.XXX..","X.XX.XX....XX.","X.XX.XXX..XX..","..X.XXX....X.X",".X.XXX.....X.X",".X....X..X.X..","..X.X.X.X..XXX",".XXX...X.X...X"}

    Returns: 34

  33. {"....X..","..XXXX.","X......"}

    Returns: 4

  34. {".X.XX..XX",".XX.XXXXX",".XX.XXXXX","XXXXX.XXX","XXX..XXX.",".XXX.XXX.",".X.XX..XX",".XXX.XXXX","XXX.XXX.X","XXXXXXXX.",".XXXXXX.X"}

    Returns: 14

  35. {".",".",".",".",".",".",".",".","X",".","X",".","X","X","X","X",".","X","X",".",".","."}

    Returns: -1

  36. {"X",".","X","X"}

    Returns: -1

  37. {"...X.XXXXXX",".XXXX.XXXXX","XX...XXX.X.","XXXX.XXX...","X.XXXX.X.X.",".X.XXXXXX.X",".X.X..XXXXX",".X...XX..X.","X.XXX.XXX.X","XXXXX.X.XX."}

    Returns: 17

  38. {"X..XXXXX.X.X.X...XXX",".X.XX.XXXXXXXXXXX.XX"}

    Returns: 5

  39. {".XX","...","..X","X..",".X.","X..","..X"}

    Returns: -1

  40. {".X..","X..X"}

    Returns: 2

  41. {".X","XX","XX","XX","XX","XX","XX",".X","XX","XX","XX","XX","XX","XX","XX","XX"}

    Returns: 2

  42. {"...XX..XX......","X..X...X....X.X","...X..X....X.XX","......X..X.....","X..X...XXXXXX..","X.X...X.XX.....",".XX....X.X.....","XX..X...X.....X","..X..X......X..",".X...XX.X...X..","...X.X.........","...........XX..","X......X......X","....X.X..X.....",".X.XX.....X...."}

    Returns: -1

  43. {"....X......X.","...XX.X.X...X","....XX...X...","XX.....X.....",".X...X.....X.","...X......X.X","...X....X...."}

    Returns: -1

  44. {".XX.XX.","XXX.XX.",".XX.XXX",".X.X...",".XXX...",".......",".XX....",".......","XXX...X"}

    Returns: -1

  45. {"XX......X.....X..X.","XX..XX.XX.X.X.X....",".XX..XXX...X.X.X...","..X.X.X.XXXXX.....X","..XXXXX......XX...X",".X.....X..X..X.X..X","..X.XX.X...XX.XX...","X..XXX.X..X.X..XX..","..X........XXXX...X","XXX.XX.....XXX...XX","XX.X.X.X.X.X....XX.",".XXXXXX..XXX.X.X...","X..XXXX.X.XXX.....X","X..XXXXXX..X..X.XXX","...X.XX.XX...X.X...","...XXX....X.....X.."}

    Returns: 56

  46. {".XXXX.X.XXX..X.XX.","X...XX.XXX...X.XXX","XX.XX.XXXXXXXXXX.X","XX..XXXXXX.X.XX...","XX.....XXXXXXXXX..","X.X.XX.XX..XXXXXXX","..XXXX.XXX..X.X...","XXXX....X...XX..X.","X..XX...XXXXXXXXXX","XX.XX.XXX.XXXX..XX","X..XXXXX...X.XX.X.","XXXXX.XX.XXXXX...X",".X..X.XXXX..XX..X.","..X.XXX....X.X.X.X","XX.XXX..XX..XXX..X","XX.X.X.XXXX..XX.X.","..XX.X.XXX..X.X.X.",".X..XXXXXXXXX..XX.",".X.XXXX.XX....XXXX"}

    Returns: 50

  47. {"XXX....X.XXX.","X.X...X..X.X."}

    Returns: 5

  48. {"...X..X.","....X...","X....X.X","....XXX.",".XX....X","X..X...."}

    Returns: 10

  49. {".X..X.......","X.X..X..X..X","X...X.XX.X..","XXX....X....",".........X..",".X.XXX...X.X"}

    Returns: 15

  50. {"XXXXXXXXX",".XXXXX.XX","XXX.XXX.X","XXXXX.XXX","XX.XXXXXX","X.XXX.X.X","XXXXXXXXX","XX.XXXXXX","XXXX.XXXX","XX.XXXXXX","XXXXXX.XX","XXXXXXXXX","XXXX.XXXX","XXX..XXX."}

    Returns: 10

  51. {"..................","..................",".......X..........","...............X.X",".................."}

    Returns: -1

  52. {"....XX..XXX..X.X.X.X.","X....XX.X..X..XXX.X.X","....X.X.......X.XX...",".XXX..XXXX........X..","..X.X...XXX.X.X.XX...",".X....X.XX...XXX.XXX.","XX..X.X..XX...X..X...","..X..XXX....XX..XX...","X.XXX........XXXX....","X.XXX.....XXX....X..X","XX.XX...X...XXXXX..XX","XXX.X..X.XXX...X.X.XX","XXXX.X..XXX.X....X.XX","..X......X....XX.XXX.",".X...XX...X.XXXX.XXXX","...XXX...X.....X.XX.X","...X.X.XXXXX.........","..X..X....X....XX.X..","X..X...XXXX...XXX...X","X....XX.XX...XXXXXX.X","XX....X.XXX.XXXX.XX.X","..XX.X.XXXXX.XXXX.X.."}

    Returns: 82

  53. {".....",".....","X....",".X...","XX...","....."}

    Returns: -1

  54. {"X.XXXXXXX.XXXXXXXXXXX","..X.XXX.XXXXX.XXX.XXX","XXXXXXXXXXXXXXXXXXXXX","X..XXXXXXXX.X.XXXXXXX",".XXXX.XXXX.XXXXX.X.X.","XX.XXXX.XX.XXX...XX..","X.XXX.XXX.XXXXX.XXXXX",".XXXXX.XXXXXXX.X.XXXX","XXXXXX.XXX..XXXX.XXXX"}

    Returns: 20

  55. {"XXXXXXXXXX.XXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXX.","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX"}

    Returns: 2

  56. {".XX...X.",".X..XXXX","X.X.XXX.","X.XX.X..","XXXXX...","XX.XX..X","..XX..X.","XX..X..X","X.XXX.XX","XXX.XXXX","XXXX.XXX","XXXXXXX.","XXX.X..X",".XXX...X",".X.X.XXX",".XXX.X.."}

    Returns: 20

  57. {"...X...........X.X.","..X.....XX.........","...................","............X......",".XX.........X......",".......X........X..","......XX.X....X....",".........X.....X...","X..................","........X..........",".....X.............","X.....X......X.....","................X..","........X...X......",".X..X.........X....","..X.......X........"}

    Returns: -1

  58. {".X..","....","X..X","XXXX","X.XX","X..X","...X",".X.X","..X.","..XX","XXXX","...."}

    Returns: 9

  59. {"............","X.X.X....X..","XX...X..XX..","............",".X.........."}

    Returns: 14

  60. {"..X"}

    Returns: -1

  61. {"X....X...XX..X..","...XX.......X...","..........X.X...","....X...X..X....","..XX..........X.",".....X..X...X...","XXX.XX.X.......X",".........X...X.."}

    Returns: 29

  62. {"X..X..X..XXXXX","XX.XX.....XX..","XXXXXX..X..XXX","XXX..X.XX.....","X.XXXXXXXXX...",".XXXXXXX.XXXX.",".XXX..X.XXX..X","XXX.XXXX.XXXXX","XX.X..XX..XXXX","XXXXXX.X.X.XXX","XX.X..X.XX..X.","XXXXXXX.XXX.X.",".XX..XXXX.X.XX","X.XX...XXX.X.X"}

    Returns: 27

  63. {"X...XX.XX",".XX..X..X","......XX.","X..XXX..X","X.XX.X...",".XX......","XX.XX....","X.X...X..",".XXXX..X.",".......X.","...XXX.XX",".........","...XX.XX.",".........","X...XXX..","..X....X."}

    Returns: -1

  64. {"X.X.","X...",".X..","XXXX","..X.","....",".X..","XX..","....",".X..",".X..",".X.X",".X..","...."}

    Returns: 13

  65. {"XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXXX.XX","XXXXXXXXXXXXXX","XXXXXXXX.XXXXX","XXX.XXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","..XXXXXXXXXXXX","X.XXX.XXXXXXXX","XXXXXXXXXXXXXX","XXX.XXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXX.XXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXXXXXXXX","XXXXXXXX.XXXXX","XXXXXXXXXXXXXX"}

    Returns: 8

  66. {"...........X..........","...X..................","...X......X......X....","........X...X........X"}

    Returns: 21

  67. {"..X.X..XX."}

    Returns: -1

  68. {"..X........X...","....X.....X..X.","...X...X.......","...............","..........X....","X..............",".......X......X","......X........",".X.............","....X......X...","...............",".....X..X......","...........X...","......X...X.X..","....X..........","........X......","...............","............X..","...........X...","...X.X........."}

    Returns: -1

  69. {"X.X..X.","XXX.X.X","XX.XX.X","X.XXXXX","..X.X..","..XX...","XXXX..X","XX.XXXX","X.X..XX","XXXXX..",".XX.XX.","X...XXX","X.X..X.","XXXXX.X","X.XXX.X"}

    Returns: 17

  70. {"XX..X.XX....",".....XXXX.X.","...XXX.X..X.",".X..X.......","XXX.X....X.X","XX.XX.X.....","......X...XX"}

    Returns: 17

  71. {"......"}

    Returns: -1

  72. {"XX","XX","XX","XX","XX","XX","XX","XX",".X","X.","XX","XX","XX"}

    Returns: 1

  73. {"....X...","........","........","........","........","........","........",".......X","....X...","........","......X.","........","........",".....X..",".X......","...X....","........"}

    Returns: 34

  74. {".X..","XXXX","XXXX","X.XX"}

    Returns: 2

  75. {"............","............","...X........","............","...X.......X","............",".X..........","............",".........X..","X...........","............","..X....X..X.",".......X...."}

    Returns: 39

  76. {"X.X.XX.XXXX.","X.X.X.XXXXX.","X.XXXXXXXX..","XXXXX.XXX.XX","X.X.XXXXXXXX","XXXX..X.X.XX"}

    Returns: 10

  77. {"..",".X","..","X.","..","..","..","XX",".X",".X","..",".X","XX","..","..","..","..","..","XX","..","X.","X."}

    Returns: 11

  78. {"....X...XXX.X..",".....X.X......X",".............X.","......X.....X.X","X.X....X....X..",".........X.X...","..X.X....XX.X.X","X.......X..XX..","...............","..............X","..........XX...",".X......X.X....","........X..XX..","..XXX.X......XX","XX......XX.....","..X...X..X.X.X.",".X......X......","....X..XX..X...","......XX.X.X...","....X.X......X.",".......X.X....."}

    Returns: -1

  79. {"...X..X.X....X......","....X.......XX.....X","..............X..X..","........X.......X..X",".XX...X.X...X.....X.","X.X.........X.......","..X...........X...X.","XX....X....X...X....","........X.X.........","...X..........X.X.X.","..X.X.X.............",".....X.X......X...X.","XXX.................","X..........XXX......",".X...X...X........X.","...X...X..X.......X.","X...X...X...X.......","X.....X.....X.....X.",".................X..","....X...X....X.X..X.","........X......X...X"}

    Returns: 100

  80. {".XXX...XX.....X..X",".......X.X.X.X.X.X",".XXX.XX..X.X..X...","..XX....XXXXX.X..."}

    Returns: 15

  81. {".....X.XX.X...XXX",".XXX.X.XXX...X...","XX.X.XX.XX......X","XX.....XX.XX..X..","..X..X....XXXX.XX",".....X...X.X...XX",".X...XX.....XX.X.",".X..X.....XX.XX.."}

    Returns: 27

  82. {"XX.XXXX","XXXXX.X","XXX...X"}

    Returns: 3

  83. {"XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX","XXXX"}

    Returns: 0

  84. {"XX.....X","XX....X.","X....XX.","X..X.X..","....XX..",".......X",".XXX....","....XXX.","..XX.XXX","XX.XXX.X",".XX.X..X","XX......","........","X......X","XX......","XX.....X","..XX...X",".XXXXXX.","XXXX...X","X.XX.X.."}

    Returns: 30

  85. {".","X",".","X",".","X",".",".",".","X","X","X",".",".","X",".","."}

    Returns: -1

  86. {"XXXXXXXXXXXX.XXXXXXXXX","XX.XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXX.XX","XXXXXXXXXXXXXXXXXXXXXX","X.XXXXXXXXXXXXXXXXXXXX","XXX.XX.XXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 5

  87. {".........",".........","........."}

    Returns: -1

  88. {"..","X.","..","X.","X.",".X","..","XX","..",".X",".X","..",".X","..","X."}

    Returns: -1

  89. {"X.."}

    Returns: -1

  90. {".","X",".",".",".",".",".",".",".",".",".",".",".","X","."}

    Returns: -1

  91. {"XX.XXX.X","XXXXXX..","..XXXXX.","..X..X..","...X.XXX","X..XXX..","X...XXX.",".....XXX","X..X..X."}

    Returns: 12

  92. {"X...XX..XX","X.XXXXXXX.","..XXX.XX.."}

    Returns: 5

  93. {"..X......XXX..X.....","XX...............X..","...X...X........X...",".X.....X..X.X......X","X.X..X..X...X.......",".XX.X.X.X.X......X..","........X....X......",".X.X....XX..X.....XX",".......X..........X.","..........X......X..","....X.X.X......XXX..","..X...........X..XX.",".X..X......X..X....X",".X..XX.X...........X","..X.....X.....X.....","....X...XX....X.....","..XX.........X....X.","...XX......XXXX.....",".........X........X.","..X......X..........",".X.X....X...........",".................X.."}

    Returns: 100

  94. {"XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXX.XXX.","XXXXXXXXXXXXXXXXXX."}

    Returns: 2

  95. {".............",".............",".............",".............","............."}

    Returns: -1

  96. {".....X.....","........X..","........XX.",".XX.X......","........X..",".....X.....","...........",".X.....X...","...X....X..","..X........","...X...X...","...........","...........","...........","...........","..........."}

    Returns: -1

  97. {".....X.X.XX..XX.","......XX..XXX.X.","XXXXXXXX.XX.XXX.","XXX..XX.XX...XX.","XXXX.X.X.X...XX.","..X..XX.XXX.XXX.","XXX.X...XX.XXXX."}

    Returns: 19

  98. {"................",".....X..........","................","................","........X.......","................","................"}

    Returns: 28

  99. {"XXX.X.X.XXXXX.X.XX.XXX","XX.X.XXXXX..X.XXX.X.XX","XX...XXXXX....XXXXXX..","XXXX..X.X.X.XX..XXX.XX","X.X..XXXXXXXX..X.XX.X.","XX.XXXX..XX.XX...XX..X","..XX..X..XXXXXXXX.X.XX","X.XXX..XXX.X.XXX..X.X.","..XX.XX.X.XX..XXXXXXXX","..XXXXXXXXXXX..X.XXXXX","XX.XXX.XX.XX..XX..X.X."}

    Returns: 31

  100. {"X",".","X","X"}

    Returns: -1

  101. {".................","....X...........X","..X.......X..X...","................X","...X.........X..."}

    Returns: -1

  102. {"XX.XXX.X...XX.XX","X.X.XXX....X...X",".X.XX...XX.XXX..","....XXXXXXX.XXX.","XXX....X..XXXX.X","..XX.X.XXXXX..XX","XX.X.XXXX..XX.XX","X.XXXXXXXXX.X.XX",".X..XXX.XX.....X",".X.XX...X.XXXXX.","X.X...XX..X..XXX","XX.XXXX.X.XXX..X",".XXX.....XXXX.X.","X.X...XXXXXX....","XXX.XXXXXX.XX.XX","XXXX.X.X.XX.XX..","XXXXX..XXX.XXXX.",".XXXX.XX...X..X.","X.XXX..XXX.XX...","..XXXXX.X.XXX..X"}

    Returns: 49

  103. {".XX.X.","X.....",".X....","..X.X.","X.....",".X....",".X....","......",".X...X","X.....","XX....","XX...X",".X....","...X..","...X..",".XXX..","......","...X..","......","......","XXX.XX"}

    Returns: 29

  104. {"XXXXXXXXX","XXXXXXXXX","X..XXXX.X","XXXXXXXXX","XXX.XXXXX",".XXXXXXXX","XXXXXXXXX",".XX.XXXXX",".XXXXXXXX"}

    Returns: 6

  105. {"X.X..XXXX",".X.XXXX.X","..X..X.X.","XX...XX.."}

    Returns: 6

  106. {"..X.X.....XXXX.......X","X.XX..XX....X...XX.X..","XX.XXX.X..XX.X.X..X...",".X..XXXXX..XX...XX.X.X","...XXX.X.X.X..XX..X.X.","X.X...XX...XXXX..XXX.X","...X...X..XXXX.XX.XX..","X......X.X..XXX.XXXXXX","...X..X..X.XXXXX.X...X",".XX.X.XXX.XX....X...X.",".X.XX.X.XXXX...X...X.X","X.X.XX..X.X.XXX..X..X.",".X...X..XX.XXXXX..XX..","....XX....XXXX.XXX..X.","XX..XXX.X.X....X..XX.X","..X...XX....X.X.XX.X..","X....XX...X.XXXXXX....",".X.....XX..X.XXXXXX...","X.XX....X...X...X..XXX",".X..X..XX.XX..X.X..X.X",".X.......XX...X...X.X.","XX..X.X..X.X...X.XX..X"}

    Returns: 88

  107. {"X..XX..XXXXXXXX..X..X.","XXXX.XX....X.XX.X.XXX.",".X..X..XX.XXXX...XXX.X",".XX.X.X...X..X..XXXXX.","XXXX.X..X..XX...X.XXX.","XXX.XXXXX......X...XX.",".XXXX.X.X.X.XX.X..XX.X","XX..XX...X.X.XX.X.X...",".XXXX..X.X.XXXX..XX...","XX...X..XX.X..X...XXXX",".X.X.X.........XX.X.X.","XXX.X.XXX..X.X.X.XXXX.",".XXX.XX..XX...XXX...XX","X..XX.X..XXX.XXXX.X.X.","..XXX.......XXXXX.XX..","XXX..XXX.X..X.....XXXX",".XXXXXX.XXX..X.X.XX..X","...X.XXXXX.........XXX","...XX...XX....XX....XX","XX.X.X...X...X.X..X..X",".X...X.X.X.X.X..XX.X..",".XXXXXX.XX.X.....XX..."}

    Returns: 85

  108. {".XX..XXX.XX.XX.XX.X...","X..XX.XXXXXXX.XX...XXX",".XXXXX.X...XX....X.X..","...X.X.X..XX.X..X.XXXX","XX.XX..XX..X.XXX.XX.XX","..X..X.XXX..X..X......","XX.XX....XX..X..X.XXXX",".XXXX...XXX.X..XX.X.X.",".X.XXX....XXX.X.XXX...",".XX..X..XX..X.X...XX..","XXX..XX....X..XXXX..XX","X.X...X.XX.X...XXXX.X.","XX.X.X.XXXXX..XXX.XX..",".XXXXXX.XX.XX..XX..X..","X....X.XX.XX.X...X..X.","X.X......XXXXXXX..X.XX",".XXXX..X.XX....XXXXXXX","X...X..XX.X.XXX...XX.X","..X..XX....X..XXX..XXX","XX..X..X.XX.XXX.XXX..X",".XX.X.X.X..X....X.X...","XXXX.XXXXX.X.XXX.X...."}

    Returns: 78

  109. {"...X..X.X..XX.XX....X.","..X....X...XX...X...XX","XXXX.....X..XXXXX..XXX",".XX...X...X..XX.XX....","XX.....X..XX..X.X.XXX.","XX.X.XX..XXX.X.XX...X.","X.X.XXX..X.X.X..X..X..",".X...X.XX.X.....X....X","..X..X.XX.X...X...X..X",".X.....X.X...XXX.XX.XX","..X.XXX..X.XXXX.XX....","..XX...XX..X..X..XXX..",".X.X...XXXXX....X..XXX",".XX.XXXX..XX.X...XX..X",".X...XX....X.X....X..X","......X....X....X...X.","..XXX...X.XXXX......XX",".XXX..XX...X..XX......","X.X.X.X.XX.X...XXXXXXX","X..X.XXXXXXX.....X....","..X...XXX.XX.........X","..XX.X.X.X..XXX......X"}

    Returns: 89

  110. {"XXX.X..XX..XX..X.X.X.X","XXXX.XXXXX.....XXX...X","...X...XXXX.X.XXX.....","X.XX....X..X.X.XXXX..X","X.XXXXXX.X.XX.XXXX.XXX",".X.....XXX...X...X.XX.",".X..XXXX.X.XXXXXX..XXX",".X..XX.XXXXX..X.XX.X..","XX...XX...X...XX.X...X","XX...XXX.XXXXXXXX.XXXX",".XXXX..X.XX.X.XXXXX...",".XXX.X....X.XXX.X.XXX.",".XX.XXXXX.X.XX..XXX.XX","X...XX.XXXXX.X.X...X..","X...X..XXXXXX.X.XXX.X.","...X.XX.......XX.XX.XX","X.X....X.XXXXXX.X..X..",".X.XX..X..XXX.XX..XXXX","X.X..X.XXX.X.X....X.X.","XXXX..XXX.X...X...XXX.","XX..XXXXX.X.XXXX..X..X","...XX.X..X..X.XX.XX..."}

    Returns: 79

  111. {"X.XXX..X...X.XXXX.....","..X...X..X.X..X..X..X.","..XXX..XXX...XXXXXXXXX","..XX.XX.X..X...XX...XX","X.X..X.....X......X.X.","X....XX..........X.XX.","X.X..XX..X.....X....X.",".X.X.X.........X..XX..","..XX.......XX.X..XX...","X..X....X.....XXXX..XX","X.X.X..X....XXX.X..X.X","X.....X..XXXXXXX.X.X.X","...X.X.XXX...X.XXX..XX","..XX...XXXX.XX...XX.X.","X.X.XXX.X...XX....X..X","XX..X.XX..X...XX.XX.XX","XXX.XXX...XXX......XX.",".X.XX.XXXXX..XX..X..XX",".XXXXXXX.XXXXX...XX.X.","..X..X......X..X.XX...","..XX.XX.X..X...X..X...","X..X..X.X..X.X.XXXXXXX"}

    Returns: 87

  112. {".X.XXXXX...X...X.....X","X.X.XX.XX.XXX..XX.X...","XX..X..XX.X....X...XXX","......X.XX.X.X.XX..X..",".XXXX.........XX.XX.X.","X.......XXX.X...X.X..X","X....X...X...XX..X...X","XXX..XX.....X.XX.XX...",".XX.X.XXX.X.XX.XXX..X.",".XXX.XX...XX..X..XX...",".X..X.XXXX....X.....X.","XX.XX....X..XXXX...XX.","..XXX.XX..X.X...X..XXX","..X.XX.XX..X.XX.X...X.",".XXXXX..X.XXX..X....X.",".X..X.XX...X..XXXXX.XX","...XX.XX.X.X.XXXXXXXX.","X...X..X.XX..XXXXXXX..","XX.X.X...XX.X.X.X.XX.X","XXX.X.X..XX.X..X..X.X.","X.X..X..X..X..XX...XX.","...X.XX.X.X..XX..XX..X"}

    Returns: 88

  113. {".XXX..X...XXXXX.XX..X.","X.X....X..X...XXXX.X..","..XXXXX.X...XX.XXXX.XX","X...X.....X.X.XXX...XX","X.X....XX..X.XXXX..X.X","XXXX.X.XX.X..X.XXXXX.X","XXXX.....X..XXX..XX.X.",".X.XXXX.XXX..X.XXX.X..","X.X.XXX.X..XXXX..XXXX.","XXXXX....XX..XXXXX.X.X","X.XXXXX.X.XX.XXXX...XX","XXX.X..XX.XX.XX.XXXXXX","X.X.XX..XX.XX..XX....X",".XXX.X.XXXX...XXX..XX.","XXX...XXX.X.XX.XXXX.XX",".X.XX.X.X...X.XX..XXX.","XX.XX.XXXXXX.X..XX.X..","XX...XX.X...X...XXXX.X","..X...X..X.X.X.XXX..X.","X.XXXX.XX.XX.X.X.X..X.","XX..XXXX...X.........X","X..XXXXXXXX....XX....X"}

    Returns: 76

  114. {".XXXXXXX.X..X.XX.XXX..","X.XXXX.X.....XX...XXX.","XXX..XXXX.XX.XXXXX.XXX","..X.XX.X..XX...X..XX.X","XXX.X...X...XX.X.XX.XX","..X..X..XXX.XX.XXX.XXX","XX.X.X..XXX..X.XXX...X","XX..X.XXX...X.XXXXX.X.",".XXXXX.X...X.XXX.X.X.X","....X.X.XXXX..XX.X....",".X...X.X..XXXXX..XX.XX","XX....XXX.XXXX...XXX.X","XX..X...X..XX.X.XX.X..",".....X.X...X.X...X.XX.","..X.XXX.XX.X..X..XXXXX","XX....XX...XX.........","...XXX..X...XXXXX.XX..","XX.XXXX..XX..XXXXX.X.X",".XXXXX...XXX.X..XX.XXX","XXX.XXXXXXXXXXXXXX.X..","..X..XXX..X...X.XXX..X","X.X...X......XX.X..X.."}

    Returns: 78

  115. {"...XX...XX.X.....XX.XX","X.X...XXX.X.XX.X....XX","......X.XXXXX...XXXXX.","....XX.X.X..X.XXX.X...","...XX....X..XXXX.XX..X","..XXXXXXXX.XXX.X....XX","X.XX..XX...XXX.X.XXXXX","..X.XXX.X.X..X.XX....X","XXXX.XX.XX.XX.XX....XX","XXX.XX..XX.X.X..X...XX","..X...XX..X.XXXXX.X.XX",".XXXX..XX..XX...XX....","X..X..XX.XX.X.XX.X..XX","XX.X.XXX....X.X.XX.X.X","....XXX..XXX.XX..XXXX.",".X.X.XX....X.XX.XX.X..",".X.X..XXX.XXX.X.X.X...",".......X...X.X.X.XX.XX",".X.X.XX..XX.XXXX...XX.",".X...XXX..X.....XXX...","XX....X...XX...X.XX...","..X..XX.X..XX..X.X...."}

    Returns: 85

  116. {"XXX..X...X.XX..X..X.X.","X.X.X....XXX.X...X...X","...XX..X..X.X......XX.","XXX.X.XXX.X.X...X.XXX.","XX.XX...XXXX..X..X..X.","....XXX.XXX.....XXX.XX","XXX.XXXXXXXX..X..X.XX.",".X.XXXX.X..XX..X......","..XX.X....X.XXXXXX....","XXX..XX..X...X.XX.....","XX..........XXX.XXX.XX","..XXXXX.X..X.....X....","XXXXX..XX.X..XX..XX...","XXX.X.XXX..X.X......XX",".XXX.X.X..XXXX.XXX...X","X.X..X....XXX.....XXX.","X.X.X.....XX.XXX.X.X.X","X.....XXX..XX.X.X..X..","X.X....XXX..XX..X..XX.",".XXXX...XX..X.XXXXXX.X",".X.XXXX....XX.X.XX..X.","XX.....XXX.X......XX.X"}

    Returns: 83

  117. {"...X.X..XX..XXX..XX.XX","..X...XXXX.....X..XX.X","X.X..X.X..XX.XX..XX.X.",".XX..X...X.XX..X..XXX.","X..X...X.X....X.....X.",".XXXX.XX.........X.X..",".XX..X.X.XX.X.X.XXXXXX","X.X.X.X.XXXX.XXXX.XX.X","..XXX....X..XX..XX.X..",".X.X.XX....XX..XXX..X.","...XXX.XX..XXX...XXXXX","X.X.XX.X.XXX.XXXXX.X..","..X...X...X.X.XXXXXX.X","X.X.XXX.X.X.XX.....XXX","X..XX....X..X.XX.XX..X","XX.X.X......XX.X....X.","...XX..X.X.X..XXX..XX.",".X...X..X.X..X....X.X.","..X..XX.X...X....X.XX.","XX...X.X.X.X.XXX...X.X","X.X....X.XX...X..XXX..","...XX.XXXXX.X...XX.X.X"}

    Returns: 88

  118. {".XXXXXXXX.XXX.X..X...X","X..X..X.X.XXXX..XX..XX","....X.X.X..XXX..X....X","XX.........X.XX.XXXX..",".XX....X.XX.XX.X..XX..",".XXX.X...X..XXXX.X.XXX","X.X.XXXXX.X.X..XX.X..X","XXXX..X..XX.X..XXXXXXX","...XXX...XXX.X..XXX.X.","XX...XXXX.XXX..XXXX...","XXX.XXX...XX..XX.XXXX.","XX..X.XX.X..XXX.X....X","X..X.XXX.XX.XX.XXX.XX.","..XX...XX.XX..X.XXX.XX","XXXXXXX..XXXXXX...XXXX","X..X.XXX..XXXX...X..XX","..XX.XXXXX.XX..X.XXX.X","XX..X.X.XXX.X.XX.X.XX.","..XXXXXX.XX.X.X...XX.X","XX.XXXX.X.X.X..XX....X","..X.....XX.XXXXX...X.X","XX.X..XX.....X.X.....X"}

    Returns: 75

  119. {"..X.X.X..XX.XXXX..XXXX","X.X.X.XXX.XX.....XXXX.","XXX....X..XXXXXXXX..X.","XXXXXX.X.X.XXXXX.XX.XX",".XX.XXXXX.XXXX.X.X.XX.",".XXX.X.XX.X.....X.XX.X","X....XX..XXX..XXX.XX.X",".XXX.XX.XXXX....XXXX.X",".X.XXX.XX.XXXXX......X","XX.XXXX..XX.X.XXXXX.XX","XXX.XXX..X.X.XXX....XX","XX.....X......XX.XX.XX",".XXXXXX..XX..X.X.X..X.",".X..X.XXXX.X...X..XXX.","XXXX..X.XX..XX..XXX..X","XXXXXX.XX....XXX.X...X",".XX.X.XX.....X.X..XXXX",".X.XX.XX.XXXXX.XXX.XXX","...XXXX.XXX.XX.....X.X",".XX..X.X.XX.X...X.X...","..XX.XX..X..XXX.XXXXXX","...XXX..X.X..XXXXXX.XX"}

    Returns: 74

  120. {"..XXX...X.XX.X..X..X..","X.X.......XXX.X.X....X","XXX..X.XX.XX..X..X.X.X","X.XXXX..XX.XX.X..XXX.X","XX.XX..XXXX..X.XX..XXX","XXX.X.X..X.X..X..XX.X.","....X.XX...XX.X.....X.","X.X.XXXXXX.X....XXX..X","..X....XX...X...X.XX.X","..X..X.XX.XXXXX..XXXXX","XXX.XX.XXX...XXX....XX","X.XXX.X....XX.X.XXX..X","..XX....XX....XXX....X",".XX.XX.XXX.XX.XX.X.XXX",".XXXX.X.XXX.XXX..X.X..",".....XXX......X....X..","XX...XXX...X...XX..XX.","X....XX.X..........XXX","X.X..XXXXXXXXXX..X.X..","..XXXX..X.X...XXXX..XX","X..XXXX...X.XX.X......","X.X...X...XXX..XX..XXX"}

    Returns: 80

  121. {".XX.XXX.....XXX..X.X..","...XXX..XXX.XX..XX.X.X","XX..X.XX..X...X.XXX.X.","XX...XXX.X.X...X.XX.XX","..XX..X.X.XX..X.X..XXX",".....XXXXXXXX.....X..X",".XXX..X...XX...XXXX...",".X..X.XX.....XX.X..XX.","X...X...X.XX......XXX.",".....XXXX....XXXXXX...",".XXX.XX..X..XX.X.XX..X",".....X.XXX.XX....X..X.","X..XX..XX.X.XXX....X.X","X..X......X..XXX.XX...","X.X.XXX...X..X...XXX.X","XXXXXXX.XX...XXXXXXX.X","...X...XX...X.X.XXXXXX","X......X.XX.X....XX.X.","XXX.X..XXX.XX.X....X..","X.XX.XX.X..XX.XX.X.XX.",".X..XXX.X.XX..XX.XXXX.","...X...XXXX.XXXXXX...X"}

    Returns: 84

  122. {".XXX.......X.X...XXX.X","X.X...X.....XX......XX","XXXXX..X.XXX.X.....X.X","XX.X.X.XXX..XXXXX.X...",".XXX..XX..X....X.XX.XX",".X...X.X.XX.XX.....X.X","....X..X.X..X.X.X.X...","X....XXXXX...X..XX....","XXX..XXXX.XX.X...X..X.",".X.X...XX....X...XX.X.",".X.XXX.XXXXXXX...XXXXX","....XXX..X....XXX.XXX.","....XXX..X..XX.X.XX...",".XX.XX..XX......X...X.",".XXX.X.....X.X.X.X.X..","...XXXX.XX.XX.X..XX.XX","XX.XX..X..X.X...XX.X..","....X...XXXX..X..X..X.",".XX......X.....X.XXXXX",".XXXX......X.X..X.....","X.XXXXX...X...X..XXXXX","...X.......XXXXX..X.XX"}

    Returns: 88

  123. {"XX.X...XX..XX.XXX.XX.X",".X.XXXX.X.XXXXXXXXXX.X","XX..X..XX.X.X..XX.....","XXX..X.XX..X...X..X..X","X....XX.X...X....XXXX.",".XXXX.XX..X.XX.X..XXXX","XX.XX...X..X.XXXX..XX.","X....XX.XX.X.X.XXXX...",".X.XXXXXXXXX...X..X...",".X...XXXXX.X.X.......X",".XXXXXX..XXXXXX.XXX...",".XX.X.X.X.XX.XXXX.X.X.","..X.XXXX..X...XXXXXX.X","XX.XX.......XXXXXXXXX.","XXX...X..XX.XX..X..X..","X.XX.XX.XXXX.X.X.X..XX",".X.X.....X...XX.....X.","XXXX.....XX....X.XXX.X","XX.X.XX...X...X..XX.XX","..XXX...X.XXXX.X.X..X.","XX....XXX.X......XX...","XXXXX....XXXX..XX..X.."}

    Returns: 80

  124. {"X..X...X.X..X.X.XX.X..","X..X.X..XXX.XXX..XX.X.","X.X.X....XXX...XXXXXXX","..X..XX..X..X...X..X.X","....X...X...X.XXXXX..X","XXXX.XX..X.X..XX.XX.X.","X.XX.XX....X......X...","...XX.X.X...X..X.XX.XX",".XXX..XXX..X.XXXXX....","XX..X...X..X..XXXX.XXX",".X..XX....X...X...X.X.","X..X..X.......X.X.XXXX","X..X.XXXXX.XX..XX...XX",".X.X.XXX....XXX..X.XX.",".X..XXXXX.XX.X.X..XX..",".X..X.XX.XX.XX.XXX..XX","XXXX.X.XXX....XX.....X","X.......XXX.XXXXX..X.X","XXX.X..XXX.XX..X.....X","...XX.XX.XXX..XXXX.X..","XX.X.XXX.X...X.X.X....",".X.XXX...XXX.....XX..X"}

    Returns: 83

  125. {"XXXX.XX..X.X....XX...X","XX.XXX.X.X..XXX...XXXX",".XX...X..XX.X..XX.XXXX",".XX...XXXX..XXXX.XXX..","X......X.XX.X.XXX..X.X","..X.X...X.XX.XX..X....","...XX.X..X.X.X.X.X....","XXX..XXXXX.XX.X.X.XXXX",".X.X..X..XX.X.X.X..XX.","X..XXX.X.X.X......X.X.","X.....X..XXXXX.XXXX...",".....X..XXXXX...X..X..","X.XX...XX....X.X.XXXXX","X..X.X.X..X.X.XX..X.X.","X.XX.XXX.X..X...X.XX..","...X..X...X.X...X..X..","XX.XXX.X.X.XXX.....XXX","....X.X..XXX...X.XXX.X","X..XXXX....XX..X.X..X.",".........XXX..X...XX.X","X....XX..XX...X.X.XXX.",".X.XX...X..X.XX.X...XX"}

    Returns: 87

  126. {"."}

    Returns: -1

  127. {"..", ".."}

    Returns: 1

  128. {"X..", "..X"}

    Returns: 1

  129. {"..X", "X.."}

    Returns: 1

  130. {"...."}

    Returns: 1

  131. {"....................", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX"}

    Returns: 35

  132. {"XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "X....XXXXXXXXXXXXXXXX", "....................X", "X..................XX", "....................X", "X....................", "....................X", "X..................XX", "X....................", "....................X", "....................X", "X...................."}

    Returns: 50

  133. {".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", ".....................", "....................."}

    Returns: -1

  134. {"XXXXXXXXXXXXXXXXXXXXX", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X", "....................X"}

    Returns: 105

  135. {"..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X...........", "..........X..........."}

    Returns: 121

  136. {"X..X..X..X..X..X..X..X", "......................", "......................", "X..X..X..X..X..X..X..X", "......................", "......................", "X..X..X..X..X..X..X..X", "......................", "......................", "X..X..X..X..X..X..X..X", "......................", "......................", "X..X..X..X..X..X..X..X", "......................", "......................", "X..X..X..X..X..X..X..X", "......................", "......................", "X..X..X..X..X..X..X..X", "......................", "......................", "X..X..X..X..X..X..X..X"}

    Returns: 105

  137. {"X..X", "....", "X..X"}

    Returns: 2

  138. {"XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXXXXXXXXXXXXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXX.XXXXXX.XXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXX.XXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXX.XXXXX.XXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXXXXXXXXXXXXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 9

  139. {"X", "X", "X", "X", "X"}

    Returns: 0

  140. { "X.XXX...XX", "XX.XX....X", "X...XXXXX.", "XXXX..XXX.", "XX.XXXXXX.", "X.X.X.X.XX" }

    Returns: 9

  141. { "XX.X...XXX", "XXXXXXXX.X", "XXXXXXXXXX", ".XXXX.XXXX", "XXXX..X.XX", "XXXXXXX..X", "XXXXX.XXX." }

    Returns: 7

  142. { "XXXX", "X.XX", ".XXX", "XXX.", "..XX", ".XXX", "X.X.", "XX.X", ".XX." }

    Returns: 6

  143. { "X.XXX....", "..XXXXX.X", "XX..X..XX", "...X..X..", "..XX....X", "XXXXXX.XX", "XXX.XXXX.", "XXXX.X.X." }

    Returns: 10

  144. { "..X..X.X..", ".X..X.X...", "XX...X....", "...X....X.", ".X....X.X.", "...X......", "X.........", "...X......", "X...X.X...", "..XX..XX.." }

    Returns: 23

    only 2 possible solutions in this case

  145. { "X.XX.XXX.X", "XX.XXX..X.", "XXXX.XXXX.", ".XX..XX.X.", "...XXXXX.X", "X..X...XXX", ".XX..XXXXX", "X.XXX.X...", "X.X.....XX", "..XX.....X" }

    Returns: 16

    1 solution

  146. { "X..XX..X..X.XXX", ".XX.XXX...X.XX.", ".XX.X...XX..XXX", "...XX.XX...X..X", "...XX..XXXXXXX.", ".X...XXX.....X.", ".XX........XX..", "...XXXXXX..X.X.", "..X.....XX...X.", "XXXX..XXXXXXX..", ".XXXX.X.X..X.X.", "...XX.X.X..XXX.", ".XX.XX..X..X.X.", ".XXXXX..XX...X.", ".XXX.XX.X..XX.." }

    Returns: 40

    2 solutions

  147. { ".X.X.X.X.X.XXXX.X.", "XX..X..XX....XXXX.", "X.X.X.X........XX.", "XXXXX....X...XX...", "X..X..X.XX...X..XX", ".X.XX..X..XX...XX.", "...X.X..XX..X...XX", ".X.X.X.X.XXXX.X...", ".X.XXXXXXX..XX..XX", ".XXX..XX....XXXXX.", ".XX.XXX.X.X.X.XXX.", "XXX.X.X.XXX.X.X.X.", ".XXXX..XXX..XXXX.X", "X..XX.X..X..X...XX", ".XX.XXX..X..XXX..X", "X.X.XXX..X..XXX.X.", "X.XXXXX.X.X.X.X.X.", ".XX.XX....X....XX." }

    Returns: 57

    2 solutions

  148. { "X..X......", ".XX..X..X.", "....X.....", "X.X.......", ".....X....", ".X.X......", "...X.X.X..", ".X.X..XX..", ".X.X.X.X..", "......XX.." }

    Returns: 23

    1 solution

  149. { ".......XXX..", "...X.X...X.X", ".XXXX.......", "..XXX..XX..X", ".X.......XXX", "........XX..", "X.....X.X.X.", "....XX......", "...X.....XXX", "XX.X..X...X.", ".......X....", ".........X.." }

    Returns: 31

    1 solution

  150. { "..X..X........", "......X...X...", ".X..X....X..X.", "...X.....X....", "...X.X.......X", "X.....X...X...", "..XX..........", ".XX..X....XX..", "X..X..........", ".XXXX.........", "...........X.X", "......XX......", "X....XX.X.....", ".X....XX....X." }

    Returns: 44

    3 solutions

  151. { "XXXXX.X..X..XXX......", ".XXX.X...X.X.X.X.X.X.", "X..XXXXXXX....XX.XXX.", ".XX....X..XX..XX.X.X.", ".XX..X............XXX", "XXX.......XX..XX.X.X.", "...X.X.XXXXXXX...X.X.", "X..XXXXX.X..XX.X.XXX.", ".XXX.XX.X.....X.XXXXX", "..XXXX.....X.X...X...", ".X.XX....XX..XX.XX..X", "XXX..X....XXX..X....X", ".XX.X..X..X.XXX..X.X.", "XX..X....X.XXXXXXXXXX", ".X.XX.XXXXX..X.X..XX.", "X...X.XX.XX..X.X...XX", "X.X.X....XXXXX.X.X.X.", "XXX.XXXXX.XXXXX....X.", ".X.XX...XXXXX.XX..XXX", ".X.XXX.X.XXXXX..XX...", "XX..X..XXX..X.XX.X.X." }

    Returns: 74

    4 solutions

  152. { ".XXXX......X....", "...........X....", "..X...XXX...X...", "......X..X......", "........X.....X.", ".X..XXX.........", "..............XX", "XX....X..X....X.", ".....X...X....XX", ".....X.X.X...X.X", "..X.......X...X.", "...X.......X....", "..X........X..XX", ".....X.XX.....X.", "..X....X..X.X.X.", "..X..X...X..XX.." }

    Returns: 57

  153. { "X.XX.XXXXXXX", "X..XXXX.XXXX", ".XXXX.XXXXXX", "X..XXXXXXXX.", ".XXX.X..XXX.", "X.XXXXX..XX.", "XXX.X.XXXXXX", "XXXX.XXX.XXX", "X.XXXX.X.X.X", "XXX.XXX..XXX", "XXXXXXXX..XX", ".XX.XXXXXX.X" }

    Returns: 15

  154. { "..XX.XX.XXX.XX", "XX.XXXX.X.XXXX", "XXXXXXXX..XXXX", "X.XXXXXX.XX.X.", "XX..XXXXXX.XXX", "XXXXXXXXXXXXXX", "XXX...X..X.X..", "XXXXX.XXXXXXX.", "XXX..XXXXXX.XX", "XX.X.XXX..XXXX", ".XXXXX.XXX.XXX", ".XXXXXXXX...XX", ".XX.XXX.XXXX.X", "XXXX.XX.XXX..." }

    Returns: 20

  155. { "XXX.XXXXX.XXXXXX", "XXXXX.X.XX.XXXX.", ".XXXX.X..XXX..XX", ".X.X.XXXXXXXXXXX", "XXXX....XX.XX.X.", "XXXX.X.X.X.XX.XX", ".X.XX..X..XXXXXX", "XXX.XXXX.XX.XXX.", "XXXXX.XXXXXXX.X.", "XXX.XXX.XXX.XXX.", ".XXXX.XX..XXX.XX", "X..XXXXXXXXX.XXX", "XXXXXXXXXX.XXXX.", "XXXXXXXXX..XX.XX", "XXXXXXXX.XX...X.", "XXXXXXXXXXX..XXX" }

    Returns: 27

  156. { "X.X....XXXXXX.X.X.", "XXXXXX.X.XX.XXX.X.", "X..X.X.XXX..XX..XX", "XX.X.X...X.X.XXX.X", ".XXXXXXXX.XXX.X.X.", ".X.XXXX.XXX.XXXXXX", "XXX.X.XX.XXXXXXXXX", "X.XXXXX.XXX.XXXXXX", "XXXXXXXXX.XXX.X.XX", ".X.XX.XXXXXXX.XXXX", "XXXXXXX.XX.XXXXXXX", "XXXX.X.XX.XX.XXXXX", "XX..XXXXX..XX.XXX.", "XXXXXXXX.XX.X.X.XX", "XX..X.XX..XXXX..XX", ".XXXXX.XXXX.XX.XX.", ".X.X.XX.XXXXXXXXX.", "XXXXX.XXXXXXXXXXX." }

    Returns: 38

  157. {"XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXX.XXXXXX.XXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXX.XXXXXX.XXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXX.XXXXXX.XXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXX.XXXXXX.XXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXX.XXXXXX.XXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXX.XXXXXX.XXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXX.XXX.XXXXXX.XXX.XXX", "XXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 28

  158. {"XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXX.XXXXXXXXXXXX.XXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXX.XXXXXXXXXXXX.XXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXX.XXXXXXXXXXXX.XXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXX.XXXXXXXXXXXX.XXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXX.XXXXXXXXXXXX.XXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXX.XXXXXXXXXXXX.XXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXX.XXXXXXXXXXXX.XXXX", "XXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 14

  159. {"XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XX..XXXXXXXXXXXXXX..XX", "XX..XXXXX..XXXXXXX..XX", "XXXXXXXXX..XXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XX..XXXXXX..XXXXXX..XX", "XX..XXXXXX..XXXXXX..XX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XX..XXXXXXXX..XXXX..XX", "XX..XXXXXXXX..XXXX..XX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XX..XXXX..XXXXXXXX..XX", "XX..XXXX..XXXXXXXX..XX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 12

  160. {"....XX..XX.XXX.XXX.X.X"}

    Returns: 5

  161. {"X....................X"}

    Returns: 5

  162. {"X....................."}

    Returns: -1

  163. {"...........X.........."}

    Returns: -1

  164. {"..XX..XX..XX..XX..XX..", "..XX..XX..XX..XX..XX..", "XX..XX..XX..XX..XX..XX", "XX..XX..XX..XX..XX..XX", "..XX..XX..XX..XX..XX..", "..XX..XX..XX..XX..XX..", "XX..XX..XX..XX..XX..XX", "XX..XX..XX..XX..XX..XX", "..XX..XX..XX..XX..XX..", "..XX..XX..XX..XX..XX..", "XX..XX..XX..XX..XX..XX", "XX..XX..XX..XX..XX..XX", "..XX..XX..XX..XX..XX..", "..XX..XX..XX..XX..XX..", "XX..XX..XX..XX..XX..XX", "XX..XX..XX..XX..XX..XX", "..XX..XX..XX..XX..XX..", "..XX..XX..XX..XX..XX..", "XX..XX..XX..XX..XX..XX", "XX..XX..XX..XX..XX..XX", "..XX..XX..XX..XX..XX..", "..XX..XX..XX..XX..XX.."}

    Returns: 61

  165. {"XXXXXX..XXXXX.XXXX....", "X.XX.XXXX.X..XXXX.X.X.", ".X.XXXXXX..XX.XXXXX..X", "XXXXX.X.XX...X.X.X.XXX", "XX..XXXXX..X.XX....XX.", "XXXX..X...X.X.XX.XXXXX", ".XXX.XX.XX..XXXXX.XXXX", ".X.X.XXX.XX.X.XXXXXX..", "...XX.XX.X.XXXXX.XX..X", "XXXXX.XXXXX.XX.XXX.X..", "X.XXX....XXXXXXX..XXXX", "XXXX.XX.X.X..XXXXXX...", "X.X.XXX.XXXXXX.XX....X", "XXXXXX..XXX.XXX.X.XXXX", "XXX.X.X.XXXXXX.XXX.XXX", "XXX..XXXXXXX.X.XXXX.XX", ".XXX.XXX.XXXXX...X.XX.", "X.XXXXXX.XXXXXX..X.XXX", "XX.XXXXXXX.XXXXXX.XXXX", "X.X..X.XXXXXXXXX.XXXXX", "XXXXXXXXX.XXXXXXXXX.XX", "X.XXX.X.XXXX.XX...XX.X" }

    Returns: 63

  166. {"..XX...........XX.....", "..XX..................", "...........XX.........", "........XX............", "....XX................", "......X..X....X.......", "...X......X....X..X...", ".....X..X..X..X...X.X.", "...X.....X...X.....X..", "......X..X..X.........", ".X...X...X...X........", ".X.......X....X....XX.", "........X..X...X......", "....X.X.X...XXX..XX...", "....X...X..XX...XX....", ".....X....X...........", "...X....X....X........", ".........X....X.......", ".....X.......X........", "...X.....X..X......X..", "....X........X..X.....", ".........X.........X.." }

    Returns: 113

  167. {"......XX...........X.X", ".........X.X.....X....", "...................XX.", "..........X.....X.X...", "..X......X.....XXX...X", "....X....X.X.X........", ".................X....", "..X.X...X...........X.", "X.X..X..X.X.....X...X.", "..............X.......", ".....XXXX.......XX....", ".........X..X......XXX", ".X.....X.........X....", "...........X.....X....", "...X..........X.......", "...XX.........X....X..", "X...X.........X...X...", "........X......XX.X...", "..X.......X...........", "...X..................", ".........X............" }

    Returns: 110

  168. {"XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX" }

    Returns: 0

  169. {"..XX.XXX.X.X....X.X.X.", "..XXX..X...X.X.X.X.XXX", "..X..XX.....X..XX.X.X.", "X.X..XX..X.X...X.XXX.X", "X.X....X..X..XXXXX.X..", "X.XXXX...XXX..X..X..XX", "X.XX.XXXX.X.XXX.X.....", ".XXX..XXXX.X.XXX..X.X.", "X....XX..X...X..X.X...", "...X...XX...XX....XX..", ".X.....XXX.XX.XXX..XXX", "X......XXX.XX.X.XXXXX.", "X..X...XX..X..XXXXXX..", ".X..X.X....X..X...X.XX", ".XX....XX.X.XX.X.XXXX.", "X.XXX..X.....X..X.X.XX", "X.X...XX...XXXXXXX.X..", "..X....XX....X.X..XX..", "XXXXXX..XXXX..X.XXXXX.", "..XX..XXXXX....X.X..X.", "XX...X...X.X.XX..X..XX", "....XXXX.......XX.X..X" }

    Returns: 84

  170. {"......................", "......................", "......................", "........X.............", "......................", "...X..................", "...X........X.........", "...X..................", "...X..........X.......", "......................", ".........X............", "......................", ".............X........", "......................", ".............X........", "......................", "...........X..........", "........X.............", "......................", "......................", "......................" }

    Returns: -1

  171. {"......................", "......................", "......XXX.............", "......................", "......................", ".........XXX..........", "......................", "......................", "......................", "......................", ".X....................", "........X.............", "......................", "......................", "......................", ".........X............", "......................", "..X...................", "......................", "..........XXX.........", "......................", "...X..........X......." }

    Returns: 120

  172. {"..X...................", "..XXX.................", "..XXX.................", "..XXX.................", "..XXX.................", "..XXX................." }

    Returns: 31

  173. {"XX....XX.X.XXXXX..X..X", "..XXX.X...X....XX.X.X.", "X.X.XX.X.XXX...X..X.XX", ".XXX..XX.X..XXXX.X.X.X", "....X...X.X..X.XXX.XXX", "..X.XXXX.X.X.XX.X.X.XX", ".X.X.X.X..XX..XX.XX..X", "XXX....XX...XXXX.XX.XX", "..X.X...XXX.XXX....X..", ".XX.XX...X.XXXX.X.XXXX", "..XX.X.XX..X.X.XX..X.X", "XXX..XXX..XXXX.X..XXXX", ".X..X.XX..XXXX.....XXX", "...X.X.XX..X.X..X...XX", "X..X........X..XXX.X..", "...X.XX.....X.XX.X..XX", ".XXX.X.XXXX...X..X....", ".XXX.XXXX.X.XXX...X..X", ".XX.X..X...XX.XXX.X...", ".X..XX..X.X.....X.XX..", "XXXXX.XXXX.X.XX.X.XX.X", "XX.XXX.XX..XXXX......." }

    Returns: 84

  174. {".XXXXX...XXXX.XXX..", "XXXX....XXXX.X.X..X", "....XXXX....XXX.X..", "...................", "XXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXX", "X.................X", "..................X", ".XXXXXXXXXXX.X....X", "XXXXXXXXXXXXX.....X", "XXX..........XXX...", "...............XXXX", "XXXXXXX..........XX", ".........X.........", "..........X........", "...........X.......", "............X......", ".............X.....", "..............X...." }

    Returns: -1

  175. {"......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................", "......................" }

    Returns: 121

  176. {".....XXX..............", "..............X.......", "......................", ".........XXXXX........", "......................", "...........XXXX.......", "......................", "........XXXX..........", "......XXXX............", "...........XXXXXXXX...", "XXXX..................", "XXXXX.................", "..XXXXX...............", ".........XXXXX........", "...........XXX........", "......................", "......................", "......................", "..........XXXXX.......", "........XXX...........", "..XXXXX...............", "............XXXXXX...." }

    Returns: 109

  177. {"XXXX....X.X.XXXXX...X.", "...XX.X..XXXX.X.XX..XX", "XX.XXX.XX..X..X.XX....", ".XX..XXXX..X.....X.X..", "XXX..XX..X.XXXXX......", "X.X.X.XX.X.X..X.X.X...", ".XXX...XX...X..X.XX..X", ".X..XXXXXXX.....XX.X..", "XX.XXX..XXX.......X...", "XXX...X.XX.XX.X..X..X.", "X...XX.X.....X.XXXX...", ".XXX...XXXX......XXX..", "..X.X....XX.X..X.X...X", "XXX.XXXX..X.....XX.X.X", "X.....XX.X...XX.X.X..X", "..X.....XXXXXXX.X...X.", "XX.XX......XX.X.X.X..X", "X...X..X.XX.X..X.X.X.X", "...X..XXX..XX.X....XXX", "X..XXXX.X.X.X..XXXXX..", "XX.X....X.XX...XX.XX..", ".XXX...X.X.X.XX..X..XX" }

    Returns: 86

  178. {"X.X.X.X.X.X.X.X.X.X.X.", "X.X.X.X.X.X.X.X.X.X.X.", "X.X.X.X.X.X.X.X.X.X.X.", "X.X.X.X.X.X.X.X.X.X.X.", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", "X.X.X.X.X.X.X.X.X.X.X.", "X.X.X.X.X.X.X.X.X.X.X.", "X.X.X.X.X.X.X.X.X.X.X.", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", ".X.X.XX.XX.X.X...X.X.X", "X.X.X.X.X.X.X.X.X.X.X.", "X.X.X.X.X.X.X.X.X.X.X.", "X.X.X.X.X.X.X.X.X.X.X." }

    Returns: 110

  179. {".XX.XXX...XXXX....XXX.", ".XXX.X.X.XX...X.X...X.", "XX..X.X...X..X.X.XXXXX", "......................", ".XXXXX.X...XXXXXX.....", "...X..X.X...X....XXXX.", "..X..X.X..XXXXX...XX.X", "XX.XX.X..X.XXXX.XXX...", "......................", "XXX.XXX.X.....X..X..X.", ".....X...X...X...XXX..", "X.X....X.X..X..XXXX.XX", "XXX.X..X....X......X.X", "X..X.X.X.X..X....XXXX.", "......................", "...X..X.X...X....XXXX.", "..X..X.X..XXXXX...XX.X", "XX.XX.X..X.XXXX.XXX...", "......................", "XXX.XXX.X.....X..X..X.", ".....X...X...X...XXX..", "X.X....X.X..X..XXXX.XX" }

    Returns: 94


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: