private boolean searchHelp(String subWord, TrieNode parent) {
        if (subWord.length() == 0) {
            if (parent.isword)
                return true;
            return false;
        }
        char c = subWord.charAt(0);
        if (c != '.') {
            if (!parent.offset.containsKey(c))
                return false;
            return searchHelp(subWord.substring(1, subWord.length()), parent.offset.get(c));
        }
        else {
            for (Map.Entry<Character, TrieNode> entry : parent.offset.entrySet()) {
                if (searchHelp(subWord.substring(1, subWord.length()), entry.getValue()))
                    return true;
            }
            return false;
        }
    }