class Node: def __init__(self, letter = None): self.letter = letter self.child = {} self.isFinalLetter = Falseclass Trie: def __init__(self): self.rootNode = Node() def insert(self, word: str) -> None: node = self.rootNode for c in word: if c not in node.child.keys(): node.child[c] = Node(c) node = node.child[c] node.isFinalLetter = True def search(self, word: str) -> bool: node = self.rootNode for c in word: if c not in node.child.keys(): print(node.child.keys()) print(word) return False node = node.child[c] return node.isFinalLetter def startsWith(self, prefix: str) -> bool: node = self.rootNode n = len(prefix) if n == 0: return True counter = 0 for c in prefix: if c not in node.child.keys(): return False node = node.child[c] counter += 1 if counter == n: return True return False# Your Trie object will be instantiated and called as such:# obj = Trie()# obj.insert(word)# param_2 = obj.search(word)# param_3 = obj.startsWith(prefix)