def are_words_in_word_list(
    words, word_list, case_sensitive=False, get_score=False, all_must_match=True
):
    """Checks if word(s) are contained in another word list.
    The search can be performed with or without case sensitivity.
    The check words can contain wildcards, e.g. "abc*" to allow
    a wider range of matches against the word list."""
    if not isinstance(words, list):
        check_words = [words]
    else:
        check_words = words
    found = {}
    for w in check_words:
        word = w.lower() if not case_sensitive else w
        if "*" in word:
            idx = word.find("*") - 1
            word = word[:idx]

        for wl in word_list:
            wl = wl.lower() if not case_sensitive else wl
            if wl.startswith(word):
                found[word] = True
    if all_must_match and len(found) == len(check_words):
        if get_score:
            return True, len(found)
        return True
    if not all_must_match and len(found) > 0:
        if get_score:
            return True, len(found)
        return True
    if get_score:
        return False, len(found)
    return False