code: def make_sentence_with_start(self, beginning, strict=True, **kwargs):
          
          split = tuple(self.word_split(beginning))
          word_count = len(split)
  
          if word_count == self.state_size:
              init_states = [ split ]
  
          elif word_count > 0 and word_count < self.state_size:
              if strict:
                  init_states = [ (BEGIN,) * (self.state_size - word_count) + split ]
  
              else:
                  init_states = [ key for key in self.chain.model.keys()
                      # check for starting with begin as well ordered lists
                      if tuple(filter(lambda x: x != BEGIN, key))[:word_count] == split ]
  
                  random.shuffle(init_states)
          else:
              err_msg = "`make_sentence_with_start` for this model requires a string containing 1 to {0} words. Yours has {1}: {2}".format(self.state_size, word_count, str(split))
              raise ParamError(err_msg)
  
          for init_state in init_states:
              output = self.make_sentence(init_state, **kwargs)
              if output is not None:
                  return output
  
          return None
docs: Tries making a sentence that begins with `beginning` string,
          which should be a string of one to `self.state` words known
          to exist in the corpus.
          
          If strict == True, then markovify will draw its initial inspiration
          only from sentences that start with the specified word/phrase.
  
          If strict == False, then markovify will draw its initial inspiration
          from any sentence containing the specified word/phrase.
  
          **kwargs are passed to `self.make_sentence`