input: Write a python function to build a Trie from a list of strings.
  assert isinstance(build_trie(["apple", "banana", "grape"]), TrieNode)
  assert build_trie(["apple", "banana", "grape"]).children["a"].children["p"].children["p"].children["l"].children["e"].is_end_of_word == True
  assert build_trie(["car", "cat", "dog"]).children["c"].children["a"].children["t"].is_end_of_word == True
output: class TrieNode:
      def __init__(self):
          self.children = {}
          self.is_end_of_word = False
  
  def build_trie(words):
      root = TrieNode()
      
      for word in words:
          node = root
          for char in word:
              if char not in node.children:
                  node.children[char] = TrieNode()
              node = node.children[char]
          node.is_end_of_word = True
          
      return root