from kata_179 import Trie
from structures import run_operations

class WordDictionary:
    def __init__(self):
        self.trie = Trie()

    def addWord(self, word):
        self.trie.insert(word)

    def search(self, pattern):
        def match(node, i):
            if i == len(pattern):
                return node.terminal
            char = pattern[i]
            if char == '.':
                return any(match(child, i + 1) for child in node.children.values())
            child = node.children.get(char)
            return child is not None and match(child, i + 1)
        return match(self.trie.root, 0)
