code: def _decompose(string, n):
      '''Given string and multiplier n, find m**2 decomposition.
  
      :param string: input string
      :type string: str
      :param n: multiplier
      :type n: int
      :returns: generator that produces m**2 * string if m**2 is a factor of n
      :rtype: generator of 0 or 1
  
      '''
      binary = [int(x) for x in bin(n)[2:]]
      new_string = string
      counter = 1
      while counter <= len(binary):
          if binary[-counter]:
              yield new_string
          new_string += new_string
          counter += f _decompose(string, n):
      '''Given string and multiplier n, find m**2 decomposition.
  
      :param string: input string
      :type string: str
      :param n: multiplier
      :type n: int
      :returns: generator that produces m**2 * string if m**2 is a factor of n
      :rtype: generator of 0 or 1
  
      '''
      binary = [int(x) for x in bin(n)[2:]]
      new_string = string
      counter = 1
      while counter <= len(binary):
          if binary[-counter]:
              yield new_string
          new_string += new_string
          counter += 1
docs: Given string and multiplier n, find m**2 decomposition.
  
      :param string: input string
      :type string: str
      :param n: multiplier
      :type n: int
      :returns: generator that produces m**2 * string if m**2 is a factor of n
      :rtype: generator of 0 or 1