Statistics

Problem Statement for "SquareCutout"

Problem Statement

There once was an infinite plane called Xanadu. The plane was divided into a grid of unit square cells. The entire plane was white, with one exception: a black square. More precisely, for some unknown positive integer N there was an N times N square that consisted of N^2 black cells.

Your friend recently showed you a rectangle. She claims that she cut it out of the Xanadu plane, and that she was cutting along grid lines while doing so. Verify her story.

You are given the String[] cutout that represents a rectangular bitmap. The character '.' represents a white cell and the character '#' represents a black cell.

If the bitmap can represent a part of the Xanadu plane, return the smallest N that is consistent with cutout. Otherwise, return zero.

Definition

Class:
SquareCutout
Method:
verify
Parameters:
String[]
Returns:
int
Method signature:
int verify(String[] cutout)
(be sure your method is public)

Constraints

  • cutout will contain between 1 and 50 elements, inclusive.
  • Each element of cutout will contain between 1 and 50 characters, inclusive.
  • Each element of cutout will contain the same number of elements.
  • Each character of each element of cutout will be either '.' or '#'.

Examples

  1. {".....", "..##.", "..##.", ".....", "....."}

    Returns: 2

    This is very clearly a cutout that contains the entire square. The length of its side is 2.

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

    Returns: 1

    It is possible that this is a cutout made from Xanadu. The square was simply somewhere else. The smallest size it can have is 1.

  3. {".....", ".###.", ".#.#.", ".###.", "....."}

    Returns: 0

    This cutout is definitely not from Xanadu. The square must be filled completely.

  4. {"..####", "..####", "......"}

    Returns: 4

    We may see the bottom left corner of a square. The square is at least 4x4. It may be even bigger, but 4 is the smallest size that matches what we see.

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

    Returns: 0

    This is not a square. This is also not a part of any larger square.

  6. {"####.", "####.", "....."}

    Returns: 4

  7. {".....", "####.", "####."}

    Returns: 4

  8. {".....", ".####", ".####"}

    Returns: 4

  9. {"."}

    Returns: 1

  10. {"#"}

    Returns: 1

  11. {".#"}

    Returns: 1

  12. {"#","."}

    Returns: 1

  13. {"##"}

    Returns: 2

  14. {"#","#"}

    Returns: 2

  15. {"#.",".#"}

    Returns: 0

  16. {"##",".#"}

    Returns: 0

  17. {"#.#"}

    Returns: 0

  18. {"##."}

    Returns: 2

  19. {".###."}

    Returns: 3

  20. {".###.", "....."}

    Returns: 3

  21. {".###.", ".###.", "....."}

    Returns: 3

  22. {".###.", ".###.", ".###.", "....."}

    Returns: 3

  23. {".###.", ".###.", ".###.", ".###.", "....."}

    Returns: 0

  24. {".....", ".###.", ".###.", "....."}

    Returns: 0

  25. {".....", ".###.", ".###."}

    Returns: 3

  26. {".....", ".###.", ".###.", ".###.", ".###."}

    Returns: 0

  27. {"..", ".#", ".."}

    Returns: 1

  28. {"...", ".##", "..."}

    Returns: 0

  29. {"...", "##.", "..."}

    Returns: 0

  30. {"..", "#.", ".."}

    Returns: 1

  31. {"##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################"}

    Returns: 50

  32. {"##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "#################################################."}

    Returns: 0

  33. {"###", "...", "...", "..."}

    Returns: 3

  34. {"...........................", "...........................", "...........................", "...........................", "...........................", "###########################", "###########################", "###########################", "###########################", "###########################", "###########################", "###########################", "###########################", "###########################", "###########################", "###########################", "###########################"}

    Returns: 27

  35. {"....", "..##", "##.#", "##.."}

    Returns: 0

  36. {".............................#####################", ".............................#####################", ".............................#####################", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}

    Returns: 21

  37. {"#..#", "...#", "###."}

    Returns: 0

  38. {"#.#", "#.#", "#.."}

    Returns: 0

  39. {"#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "................."}

    Returns: 17

  40. {"........##", "........##", "........##", "........##", "........##", "........##", "........##", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........."}

    Returns: 7

  41. {"###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "..."}

    Returns: 14

  42. {"#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", ".....", ".....", ".....", "....."}

    Returns: 13

  43. {"...#", "#...", "###."}

    Returns: 0

  44. {".###", "#.#.", "###."}

    Returns: 0

  45. {"..........", "..........", "..........", ".........#"}

    Returns: 1

  46. {"...#", "....", "#.#.", ".##."}

    Returns: 0

  47. {".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", "...##", "...##", "...##", "...##", "...##", "...##", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", "....."}

    Returns: 6

  48. {"..##", ".###", "..##", "#.#."}

    Returns: 0

  49. {"...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", ".............#####.............................", ".............#####.............................", ".............#####.............................", ".............#####.............................", ".............#####.............................", "..............................................."}

    Returns: 5

  50. {"...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..##...........................................", "..##...........................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 2

  51. {"...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "###", "###", "###", "###", "###", "###"}

    Returns: 6

  52. {".............##############", ".............##############", ".............##############"}

    Returns: 14

  53. {"##", "##", "##"}

    Returns: 3

  54. {"##########", "##########", "##########"}

    Returns: 10

  55. {"......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########", "......###########"}

    Returns: 17

  56. {".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "................."}

    Returns: 33

  57. {"..................................#############", "..................................#############", "..................................#############", "..................................#############"}

    Returns: 13

  58. {"...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "..........#################", "..........#################", "..........#################", "..........#################", "..........#################", "..........#################", "..........#################", "..........#################", "..........#################", "..........#################", "..........#################"}

    Returns: 17

  59. {"####################################..............", "####################################..............", "####################################..............", "####################################..............", "####################################.............."}

    Returns: 36

  60. {"..#", "##.", "#.#", ".##"}

    Returns: 0

  61. {"##", "##", "##", "##", "##", "##", "##", "##", "##", "##"}

    Returns: 10

  62. {"########..........................................", "########..........................................", "########..........................................", "########..........................................", "########..........................................", "########..........................................", "########..........................................", "########..........................................", "########..........................................", "########.........................................."}

    Returns: 10

  63. {"#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####"}

    Returns: 17

  64. {"..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "..", "..", "..", "..", "..", "..", "..", "..", "..", ".."}

    Returns: 23

  65. {"#.##", ".#..", "..#."}

    Returns: 0

  66. {"#...", "#...", "#...", "#...", "#..."}

    Returns: 5

  67. {"###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "###............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 41

  68. {"......................................#########", "......................................#########", "......................................#########", "......................................#########", "......................................#########"}

    Returns: 9

  69. {"......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "......................#########################", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 25

  70. {"...............................................", "...............................................", "...............................................", "...............................................", "...............................................", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##", ".............................................##"}

    Returns: 12

  71. {"##.#", "#..#", "...#", ".###"}

    Returns: 0

  72. {"...", "##.", "##.", "..."}

    Returns: 2

  73. {"...", "...", "...", "###"}

    Returns: 3

  74. {"........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........."}

    Returns: 15

  75. {"...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "########...................", "...........................", "..........................."}

    Returns: 20

  76. {"..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##"}

    Returns: 15

  77. {"#.#", "...", "#.#"}

    Returns: 0

  78. {"..#", "..#", "...", "..."}

    Returns: 2

  79. {"##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "##########", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........."}

    Returns: 20

  80. {".................", "#################", "#################"}

    Returns: 17

  81. {".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", ".###", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "...."}

    Returns: 35

  82. {"##...............", "##...............", "##...............", "##...............", "##..............."}

    Returns: 5

  83. {"...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################", "...................############################"}

    Returns: 33

  84. {"...............................................", "...............................................", ".........................#####.................", ".........................#####................."}

    Returns: 5

  85. {"#..#", "....", "#.##"}

    Returns: 0

  86. {"####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "####################.......", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "..........................."}

    Returns: 20

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

    Returns: 2

  88. {".......##########", ".......##########", ".......##########", ".......##########", ".......##########", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "................."}

    Returns: 10

  89. {"#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "................."}

    Returns: 20

  90. {"........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##", "........##"}

    Returns: 10

  91. {"###", "..."}

    Returns: 3

  92. {"###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "###################################............", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 35

  93. {"..............####################.............", "..............####################............."}

    Returns: 20

  94. {"........................###", "........................###"}

    Returns: 3

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

    Returns: 4

  96. {"...........................", "...........................", "...........................", "...........................", "########...................", "########...................", "########...................", "########...................", "########...................", "########..................."}

    Returns: 8

  97. {"..", "#.", "#.", "#.", "#.", "#.", "#.", "#.", "#.", "#."}

    Returns: 9

  98. {"#####", "#####", "#####", "#####", "#####", "#####", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", "....."}

    Returns: 6

  99. {"...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "##.............................................", "##.............................................", "##.............................................", "##.............................................", "##.............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 5

  100. {".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####"}

    Returns: 8

  101. {"#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####"}

    Returns: 10

  102. {"#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "#######################....", "...........................", "...........................", "..........................."}

    Returns: 23

  103. {"#######################....", "#######################....", "#######################....", "...........................", "..........................."}

    Returns: 23

  104. {"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######...........................................", "#######..........................................."}

    Returns: 13

  105. {"#######..........", "#######..........", ".................", "................."}

    Returns: 7

  106. {"#####", "#####", "#####"}

    Returns: 5

  107. {".###", ".###", ".###"}

    Returns: 3

  108. {"##", "##", "##", "##"}

    Returns: 4

  109. {"..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".....#####", ".....#####", ".....#####", ".....#####", ".....#####"}

    Returns: 5

  110. {".###", "#.#.", "....", "##.."}

    Returns: 0

  111. {"#....", "#....", "#....", "#....", "#....", "#....", "#....", "#....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", "....."}

    Returns: 8

  112. {"##", "##"}

    Returns: 2

  113. {"#..........................", "#.........................."}

    Returns: 2

  114. {"..........................................#####", "..........................................#####", "..............................................."}

    Returns: 5

  115. {"...", "..#"}

    Returns: 1

  116. {".....####.", ".....####."}

    Returns: 4

  117. {"..##", "....", ".#..", "..##"}

    Returns: 0

  118. {".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", ".....###############...........................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 15

  119. {"###", "###", "###", "###", "###", "###", "###", "###", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "..."}

    Returns: 8

  120. {"###..............", "###..............", "###..............", "###..............", "###..............", "###..............", ".................", ".................", ".................", "................."}

    Returns: 6

  121. {"....", "....", "####", "####"}

    Returns: 4

  122. {"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".......................###########################", ".......................###########################", ".......................###########################", ".......................###########################", ".......................###########################", ".......................###########################", ".......................###########################", ".......................###########################", ".......................###########################", ".......................###########################"}

    Returns: 27

  123. {"####.............", "####.............", "####............."}

    Returns: 4

  124. {"..........", "##########", "##########"}

    Returns: 10

  125. {".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".####", ".####", ".####", ".####", ".####", ".####", ".....", ".....", "....."}

    Returns: 6

  126. {"####", "####"}

    Returns: 4

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

    Returns: 6

  128. {"...", "...", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###"}

    Returns: 15

  129. {"....", "##.#", "###."}

    Returns: 0

  130. {"##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##"}

    Returns: 17

  131. {"...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "........############...........................", "........############...........................", "........############...........................", "........############..........................."}

    Returns: 12

  132. {"#####.....", "#####.....", "#####.....", "#####.....", "#####.....", "#####.....", "#####.....", "#####.....", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........."}

    Returns: 8

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

    Returns: 3

  134. {"....#######################", "....#######################", "....#######################", "....#######################", "....#######################", "....#######################", "....#######################", "....#######################", "....#######################", "....#######################"}

    Returns: 23

  135. {"......############################.............", "......############################.............", "......############################.............", "......############################.............", "......############################.............", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 28

  136. {"#####", "#####", "#####", "#####"}

    Returns: 5

  137. {"...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...............########....", "...............########....", "...............########....", "...............########...."}

    Returns: 8

  138. {"###################################...............", "###################################...............", "###################################...............", "###################################..............."}

    Returns: 35

  139. {"#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "................."}

    Returns: 26

  140. {"#########################......................", "#########################......................", "#########################......................", "#########################......................"}

    Returns: 25

  141. {"##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", ".."}

    Returns: 12

  142. {"##.", "#..", "..."}

    Returns: 0

  143. {".........##################", ".........##################"}

    Returns: 18

  144. {"####", ".##.", "#.##"}

    Returns: 0

  145. {"..#", "..#", ".##"}

    Returns: 0

  146. {".#.", "...", "#.#", ".#."}

    Returns: 0

  147. {"####.", "####."}

    Returns: 4

  148. {"####", "####", "####", "####"}

    Returns: 4

  149. {"#..", ".#.", ".#."}

    Returns: 0

  150. {"##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##"}

    Returns: 27

  151. {"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "................................................##", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}

    Returns: 15

  152. {"#####", "#####", "#####", "#####", "#####"}

    Returns: 5

  153. {".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################", "#################"}

    Returns: 28

  154. {"##........", "##........", "##........"}

    Returns: 3

  155. {"...", "...", "...", "...", "...", "...", "...", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###"}

    Returns: 10

  156. {".##", ".##", ".##"}

    Returns: 3

  157. {".........########", ".........########", ".........########", ".........########", ".........########", ".........########", ".........########", ".................", ".................", "................."}

    Returns: 8

  158. {"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "##................................................", "##................................................", "##................................................", "##................................................"}

    Returns: 4

  159. {"######....", "######....", "######....", "######....", "######....", "######....", "######....", "######....", "######....", "######....", "######....", "######....", "######....", "######....", "..........", "..........", ".........."}

    Returns: 14

  160. {".............##############################....", ".............##############################...."}

    Returns: 30

  161. {"###.......", "###......."}

    Returns: 3

  162. {"..########", "..########", "..########", "..########", "..########"}

    Returns: 8

  163. {"#####", "#####"}

    Returns: 5

  164. {"....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "#...", "#...", "#...", "#...", "#...", "#...", "#...", "#...", "#...", "#...", "#...", "#...", "....", "....", "....", "....", "....", "....", "....", "....", "....", "....", "...."}

    Returns: 12

  165. {"#################", "#################", "#################", "#################", "#################"}

    Returns: 17

  166. {"..#", ".##", "###", "..."}

    Returns: 0

  167. {"#.#.", ".#..", "....", "...#"}

    Returns: 0

  168. {"...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##.", "##."}

    Returns: 21

  169. {"...............##", "...............##", "...............##", "...............##", "...............##", "...............##", "...............##", "...............##", "...............##", "...............##"}

    Returns: 10

  170. {"##########", "##########"}

    Returns: 10

  171. {"################.", "################."}

    Returns: 16

  172. {"###", "###", "###"}

    Returns: 3

  173. {"##########.....................................", "##########....................................."}

    Returns: 10

  174. {".................", ".................", ".................", "........#########", "........#########", "........#########", "........#########", "........#########", "........#########", "........#########"}

    Returns: 9

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

    Returns: 14

  176. {"..........", "..........", "..........", "..........", "..........", "..........", ".........#", ".........#", ".........#", ".........#", ".........#", ".........#", ".........#", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........."}

    Returns: 7

  177. {"...##", "...##", "...##", "...##", "...##", "...##", "...##", "...##", "...##", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", "....."}

    Returns: 9

  178. {"..###", "..###", "..###", "..###"}

    Returns: 4

  179. {"#..#", ".##.", "#..#"}

    Returns: 0

  180. {"....", "#.##", "#..#", "#..#"}

    Returns: 0

  181. {"...........######", "...........######", "...........######"}

    Returns: 6

  182. {"#..", "##.", "#.#", ".#."}

    Returns: 0

  183. {"...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###"}

    Returns: 19

  184. {".....", ".....", ".....", ".....", ".....", ".....", "#####", "#####", "#####", "#####"}

    Returns: 5

  185. {"...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "...", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "...", "...", "...", "...", "...", "...", "...", "..."}

    Returns: 19

  186. {"..#", "..#", "..#", "..."}

    Returns: 3

  187. {"...........................###############........", "...........................###############........", "...........................###############........", "...........................###############........", "...........................###############........", "...........................###############........", "...........................###############........", "...........................###############........", "...........................###############........", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}

    Returns: 15

  188. {".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "#################"}

    Returns: 17

  189. {".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "#############....", "#############....", "#############....", "#############...."}

    Returns: 13

  190. {"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..........................#################.......", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}

    Returns: 17

  191. {"########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################...", "########################..."}

    Returns: 24

  192. {"........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########", "........................................##########"}

    Returns: 27

  193. {".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", ".....", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####"}

    Returns: 28

  194. {"....#####..................", "...........................", "..........................."}

    Returns: 5

  195. {"...................########################.......", "...................########################.......", "...................########################.......", "...................########################.......", "...................########################......."}

    Returns: 24

  196. {"##########", "##########", "##########", "##########"}

    Returns: 10

  197. {"..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........#", ".........#", ".........#", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........."}

    Returns: 3

  198. {"###########................", "###########................", "###########................", "###########................", "###########................", "###########................", "###########................", "###########................", "###########................", "###########................"}

    Returns: 11

  199. {"..........", "..........", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########.", "#########."}

    Returns: 15

  200. {"..", "..", "..", "##", "##"}

    Returns: 2

  201. {".....", "#####", "#####", "#####"}

    Returns: 5

  202. {"..##", "..##"}

    Returns: 2

  203. {"...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "...............................................", "######.........................................", "######.........................................", "######.........................................", "######.........................................", "######.........................................", "######.........................................", "######.........................................", "######.........................................", "######.........................................", "######........................................."}

    Returns: 10

  204. {"#..#", "##.#", "##.#"}

    Returns: 0

  205. {"####......", "####......", "####......"}

    Returns: 4

  206. {".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "####.............", "####.............", "####.............", "####.............", "####.............", "####.............", "####.............", "####.............", "####.............", "####.............", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", ".................", "................."}

    Returns: 10

  207. {"..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "##########", "##########", "##########", "##########", "##########", "##########", "##########"}

    Returns: 10

  208. {"..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", ".#", ".#"}

    Returns: 2

  209. {".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", ".........######################################", "...............................................", "...............................................", "...............................................", "..............................................."}

    Returns: 38

  210. {"...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################", "...............................###################"}

    Returns: 19

  211. {".##", ".##", "##."}

    Returns: 0

  212. {"..#", "##.", "..#"}

    Returns: 0

  213. {"..###..", "..###..", "..###..", "..###..", "..###.." }

    Returns: 0

  214. {"..", "##", ".." }

    Returns: 0

  215. {".....................", ".....................", ".....................", "........##...........", "........##...........", "........##...........", ".....................", ".....................", "....................." }

    Returns: 0

  216. {".#.", ".#." }

    Returns: 0

  217. {"..##.", "..##.", "..##." }

    Returns: 0

  218. {"...#.", "...#.", ".....", ".....", "....." }

    Returns: 0

  219. {"...", ".##", "..." }

    Returns: 0

  220. {"...", "##.", "..." }

    Returns: 0

  221. {"..##..", "..##..", "..##..", "......" }

    Returns: 0

  222. {"......", "######", "......" }

    Returns: 0

  223. {".....", "...##", "....." }

    Returns: 0

  224. {".......##.." }

    Returns: 2

  225. {".................................................", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".##############################################..", ".................................................", "................................................." }

    Returns: 0

  226. {"....", "###.", "###.", "...." }

    Returns: 0

  227. {"....", "..#.", "..#." }

    Returns: 0

  228. {".....", ".###.", ".###.", "....." }

    Returns: 0

  229. {"##" }

    Returns: 2

  230. {".#.", ".#.", "..." }

    Returns: 0

  231. {"..###..", "..###..", "......." }

    Returns: 3

  232. {".#.", ".#.", ".#." }

    Returns: 0

  233. {"#", "#" }

    Returns: 2

  234. {"....", "....", ".#..", ".#.." }

    Returns: 0

  235. {"..#####", "..#.#.#", "..#.#.#", "..#####", "......." }

    Returns: 0

  236. {".......", ".......", "#######", "#######", "......." }

    Returns: 0

  237. {".##", ".##", ".##" }

    Returns: 3

  238. {"......", ".####.", "......" }

    Returns: 0

  239. {"..", ".#", ".#", ".." }

    Returns: 2

  240. {"...", "###", "###", "..." }

    Returns: 0

  241. {"......", ".####.", ".####.", "......" }

    Returns: 0

  242. {".#", ".#" }

    Returns: 2

  243. {"...", ".##" }

    Returns: 2

  244. {".##.", "...." }

    Returns: 2

  245. {"....", "###.", "...." }

    Returns: 0

  246. {"..##", "#.##" }

    Returns: 0

  247. {".....", "...##", "...##", "...##", "....." }

    Returns: 3

  248. {"....", ".##.", ".##.", ".##.", "...." }

    Returns: 0

  249. {"##...", "##...", "##...", "....." }

    Returns: 3

  250. {"###", "##.", "###" }

    Returns: 0

  251. {".###.", ".....", ".....", "....." }

    Returns: 3

  252. {"....", "#...", ".#..", "...." }

    Returns: 0

  253. {"...................#", "...................#", "...................#" }

    Returns: 3

  254. {"..................................................", ".##...............................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................." }

    Returns: 0

  255. {".......", "...###.", "...###." }

    Returns: 3

  256. {"##.##" }

    Returns: 0

  257. {".###.", "....." }

    Returns: 3

  258. {"#.#", "###", ".#." }

    Returns: 0

  259. {".....", "#####", "#####", ".....", "....." }

    Returns: 0

  260. {"############" }

    Returns: 12


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: