Statistics

Problem Statement for "PeriodicTiling"

Problem Statement

This problem statement contains images that may not display properly outside the applet.

Cucumberman went to a theme park. The floor of the park was interesting: It was tiled with black tiles and white tiles. The tiling was systematic: the floor consisted exclusively of repeated copies of a single block of tiles. For the purpose of this problem, we will assume that the floor was infinitely large. The following picture shows an example: a finite rectangular part of one possible floor.



This tiling pattern can be made of disjoint copies of a block that consists of 13 tiles. The picture on the left shows one block, and the picture on the right shows how blocks are placed to form the tiling. Let's call this tiling a 13-tiling.



Formally, a tiling is a way to represent the entire infinite floor as a union of infinitely many blocks, each containing a finite number of tiles. A tiling is called a k-tiling if the following conditions are all satisfied:
  • Each tile is contained in exactly one block.
  • Each block contains exactly k tiles.
  • Each block must be 4-connected.
  • All blocks have exactly the same shape. Formally, for any pair of blocks X and Y, there is a translation (no rotations or reflections) of the entire floor that moves block X to exactly cover the current position of block Y.
  • The tiling is periodic. Formally, for any three blocks X, Y, and Z, there is a block W such that if we take the translation that moves block X to block Y, this translation would move block Z to exactly cover the current position of block W.
You are given a String[] part that represents a rectangular part of the infinite floor. Return the minimal possible integer k such that the floor can be a k-tiling.

Definition

Class:
PeriodicTiling
Method:
minBlock
Parameters:
String[]
Returns:
int
Method signature:
int minBlock(String[] part)
(be sure your method is public)

Constraints

  • part will contain between 1 and 16 elements, inclusive.
  • Each element of part will contain between 1 and 16 characters, inclusive.
  • All elements of part will contain the same number of characters.
  • Each character in part will be either '-' or '#'.

Examples

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

    Returns: 4

    There are many valid blocks of 4 tiles, for example: #- --

  2. {"#", "#", "-", "#"}

    Returns: 3

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

    Returns: 5

  4. {"----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------"}

    Returns: 1

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

    Returns: 13

    Example from the statement.

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

    Returns: 78

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

    Returns: 99

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

    Returns: 26

  9. {"-###", "####", "----", "----"}

    Returns: 15

  10. {"-###############", "################", "################", "################", "################", "################", "################", "################", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------"}

    Returns: 255

  11. {"--#--#-------###", "-######--##--#-#", "-##-#--##--##-#-", "###-###----#--#-", "#-###--####-#-#-", "#-------#####-##", "##--##--#-#----#", "--##--##-#-#----", "##----#--#--####", "--####-#-#--###-", "---#####-##-#--#", "#--#-#----##--##", "-##-#-#----##-#-", "-#--#--#######-#", "#-#-#--###----#-", "###-##-#--####-#"}

    Returns: 135

  12. {"##-########-####", "####-###########", "#####--####-####", "##-###-#####-###", "###############-", "###-###-###-####", "-######-########", "#-----##########", "#############--#", "###-##-#####-###", "###############-", "##-#--##########", "-##########-###-", "######-######-##", "-########-##-#-#", "#-#####-########"}

    Returns: 225

  13. {"########-##-###-", "-#-#-###---#--##", "#--#-#-#-#-#--#-", "-#-#####-###--#-", "-####----##-####", "--##-###--###-#-", "#----#-#---###--", "##-##-##--#-#-#-", "######----###-##", "-#-#-#-######--#", "--####-###-###--", "####--#-#######-", "--#--#-###---###", "####-##-###-#-#-", "-###---#--##---#", "-#-#-#-#--#-####"}

    Returns: 185

  14. {"##############-#", "################", "#-#######--#####", "#-########--####", "--##-###########", "#####--###-#####", "###-#-#####-##-#", "#######-###-####", "#--#####-#######", "###-####-#-#-###", "################", "####-###########", "################", "#--######-######", "#####-###-######", "##-#####--##-###"}

    Returns: 205

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

    Returns: 156

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

    Returns: 196

  17. {"-#-----#--#-##--", "---------#-----#", "-#--#-##--------", "---#-----#--#-##", "##---------#----", "---#--#-##------", "-----#-----#--#-", "#-##---------#--", "-----#--#-##----", "-------#-----#--", "--#-##---------#", "-#-----#--#-##--", "---------#-----#", "-#--#-##--------", "---#-----#--#-##", "##---------#----"}

    Returns: 22

  18. {"#########-######", "-######--###-###", "##-######--#--##", "#-###########-##", "##-#########-###", "####-###########", "##--###-####--##", "####--#--###-###", "########-###--##", "#######-####-###", "#############-##", "##-####--##-#-##", "-#--###-####-###", "###-###--##-###-", "##-####-########", "########-###-###"}

    Returns: 130

  19. {"#####-#--###----", "##--##---####-##", "-#--##-##-##---#", "#-#####-####--#-", "###--####--#--##", "#---#---##-####-", "##-###-###--#--#", "-#####-###-#-##-", "-#--####-####-##", "###----#--######", "####-####-##-#--", "-##---#-####-#-#", "###--#---#####-#", "--#--##-##--#-##", "#-####-##----#-#", "#--#--#---#--#-#"}

    Returns: 207

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

    Returns: 69

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

    Returns: 153

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

    Returns: 157

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

    Returns: 124

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

    Returns: 90

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

    Returns: 31

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

    Returns: 144

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

    Returns: 144

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

    Returns: 114

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

    Returns: 216

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

    Returns: 119

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

    Returns: 165

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

    Returns: 130

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

    Returns: 148

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

    Returns: 1

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

    Returns: 133

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

    Returns: 128

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

    Returns: 32

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

    Returns: 136

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

    Returns: 220

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

    Returns: 79

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

    Returns: 208

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

    Returns: 130

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

    Returns: 158

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

    Returns: 58

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

    Returns: 48

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

    Returns: 78

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

    Returns: 80

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

    Returns: 168

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

    Returns: 201

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

    Returns: 177

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

    Returns: 185

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

    Returns: 222

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

    Returns: 220

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

    Returns: 99

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

    Returns: 210

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

    Returns: 206

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

    Returns: 128

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

    Returns: 184

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

    Returns: 72

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

    Returns: 181

  61. {"----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------"}

    Returns: 1

  62. {"-"}

    Returns: 1

  63. {"#"}

    Returns: 1

  64. {"--"}

    Returns: 1

  65. {"#-"}

    Returns: 2

  66. {"-#"}

    Returns: 2

  67. {"##"}

    Returns: 1

  68. {"---"}

    Returns: 1

  69. {"#--"}

    Returns: 3

  70. {"-#-"}

    Returns: 2

  71. {"##-"}

    Returns: 3

  72. {"--#"}

    Returns: 3

  73. {"#-#"}

    Returns: 2

  74. {"-##"}

    Returns: 3

  75. {"###"}

    Returns: 1

  76. {"-", "-"}

    Returns: 1

  77. {"#", "-"}

    Returns: 2

  78. {"-", "#"}

    Returns: 2

  79. {"#", "#"}

    Returns: 1

  80. {"--", "--"}

    Returns: 1

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

    Returns: 3

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

    Returns: 3

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

    Returns: 2

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

    Returns: 3

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

    Returns: 2

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

    Returns: 2

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

    Returns: 3

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

    Returns: 3

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

    Returns: 2

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

    Returns: 2

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

    Returns: 3

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

    Returns: 2

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

    Returns: 3

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

    Returns: 3

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

    Returns: 1

  96. {"-", "-", "-"}

    Returns: 1

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

    Returns: 3

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

    Returns: 2

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

    Returns: 3

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

    Returns: 3

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

    Returns: 2

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

    Returns: 3

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

    Returns: 1

  104. {"-"}

    Returns: 1

  105. {"-#"}

    Returns: 2

  106. {"###"}

    Returns: 1

  107. {"####"}

    Returns: 1

  108. {"------"}

    Returns: 1

  109. {"--###---"}

    Returns: 6

  110. {"#------#---#"}

    Returns: 11

  111. {"--#-#----#-#----"}

    Returns: 7

  112. {"-", "#"}

    Returns: 2

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

    Returns: 2

  114. {"---", "---"}

    Returns: 1

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

    Returns: 3

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

    Returns: 5

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

    Returns: 8

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

    Returns: 2

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

    Returns: 14

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

    Returns: 2

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

    Returns: 2

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

    Returns: 4

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

    Returns: 4

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

    Returns: 6

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

    Returns: 14

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

    Returns: 17

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

    Returns: 29

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

    Returns: 1

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

    Returns: 4

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

    Returns: 9

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

    Returns: 4

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

    Returns: 8

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

    Returns: 17

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

    Returns: 16

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

    Returns: 9

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

    Returns: 5

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

    Returns: 7

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

    Returns: 4

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

    Returns: 13

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

    Returns: 18

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

    Returns: 4

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

    Returns: 28

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

    Returns: 84

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

    Returns: 1

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

    Returns: 12

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

    Returns: 18

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

    Returns: 16

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

    Returns: 30

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

    Returns: 14

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

    Returns: 12

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

    Returns: 84

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

    Returns: 9

  153. {"--", "--", "--", "--", "--", "--", "--", "--", "--", "--", "--", "--"}

    Returns: 1

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

    Returns: 24

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

    Returns: 30

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

    Returns: 30

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

    Returns: 7

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

    Returns: 89

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

    Returns: 147

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

    Returns: 15

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

    Returns: 16

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

    Returns: 18

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

    Returns: 30

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

    Returns: 45

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

    Returns: 34

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

    Returns: 60

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

    Returns: 172

  168. {"----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------"}

    Returns: 1

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

    Returns: 2

  170. {"----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------"}

    Returns: 1

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

    Returns: 3

  172. {"----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------"}

    Returns: 1

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

    Returns: 3

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

    Returns: 1

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

    Returns: 4

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

    Returns: 4

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

    Returns: 4

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

    Returns: 5

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

    Returns: 5

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

    Returns: 5

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

    Returns: 5

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

    Returns: 5

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

    Returns: 6

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

    Returns: 6

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

    Returns: 6

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

    Returns: 6

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

    Returns: 6

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

    Returns: 6

  189. {"----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------", "----------------"}

    Returns: 1

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

    Returns: 2

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

    Returns: 4

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

    Returns: 6

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

    Returns: 6

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

    Returns: 6

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

    Returns: 3

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

    Returns: 6

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

    Returns: 6

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

    Returns: 2

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

    Returns: 5

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

    Returns: 6

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

    Returns: 250


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: