Как проверить, встречаются ли какие-либо символы из одной строки в другой строке?
Можно проще (если без регулярки):allowed = set("abcd") # разрешенные символы

password_ok = "babc" # валидный пароль
password_bad = "baz" # невалидный пароль

print(set(password_ok).issubset(allowed)) # true - пароль состоит только из символов allowed
print(set(password_bad).issubset(allowed)) # false, в пароле есть другие не разрешенные символы
В итоге функция:def password_valid(password, allowed):
    return set(password).issubset(set(allowed))
Лучше использовать регулярные выражения, см. модуль re стандартной библиотеки.
Но если сложно, можете использовать такую функцию:def check_password_for_chars(password, chars):
    for char in chars:
        if char in password:
            return True
    return False
Ну и для каждой проверки вызываете её 4 раза, указывая в качестве chars свои наборы символов.
Если потребуется проверять, что в пароле больше 1 символа из chars. Убираете return True из тела цикла. Добавляете в функцию третий аргумент, скажем min_count (минимальный счёт), и перед циклом добавляете локальную переменную, скажем count (счёт), со значением 0. Тогда в теле цикла, при каждом обнаружении искомого символа в пароле, Вы увеличиваете count на 1. И в конце проверяете, что count больше или равно min_count, чтобы вернуть True или False.
Но, во-первых, с регулярными выражениями решение будет короче и без цикла. Во-вторых, регулярные выражения очень гибкий инструмент. И в-третьих, они могут сильно пригодится в будущем.