import re


def find_names(doc: str, name_db: dict[str, list[str]]) -> list[str]:
    """
    Returns a list of all characters that were present in the document.
    Characters are returned as full names; not as they were found.
    """
    out = set()
    for w in doc.lower().split():
        w = re.sub(r"[^a-z]", "", w) # Remove all non-alphabetical
        for name, keys in name_db.items():
            if any(k.lower() == w for k in keys):
                out.add(name)
                break
    return list(out)