search (word, curr = this, index = 0) {
    if (index > word.length) return true; // e.g. final '.'
    for (let [i, char] of [...word.slice(index)].entries()) {
      if (char === '.') {
        for (let child of Object.keys(curr.children)) {
          if (this.search(word, curr.children[child], i + 1)) return true;
        }
      }
      else if (!curr || !curr.children[char]) return false;
      curr = curr.children[char];
    }

    return curr.isWord;
  }
Returns if the word is in the data structure.
A word could contain the dot character '.' to represent any one letter.
@param {string} word
@return {boolean}