text: """
  Implement a trie with insert, search, and startsWith methods.
  
  Note:
  You may assume that all inputs are consist of lowercase letters a-z.
  """
  import collections
  
  
  class TrieNode:
      def __init__(self):
          self.children = collections.defaultdict(TrieNode)
          self.is_word = False
  
  
  class Trie:
      def __init__(self):
          self.root = TrieNode()
  
      def insert(self, word):
          current = self.root
          for letter in word:
              current = current.children[letter]
          current.is_word = True
  
      def search(self, word):
          current = self.root
          for letter in word:
              current = current.children.get(letter)
              if current is None:
                  return False
          return current.is_word
  
      def starts_with(self, prefix):
          current = self.root
          for letter in prefix:
              current = current.children.get(letter)
              if current is None:
                  return False
          return True
  