Кратчайший путь с ключами и дверями

Графы Экстремальная
Дана сетка grid из строк одинаковой длины: '.' - свободная клетка, '#' - стена, '@' - старт, строчная буква 'a'-'f' - ключ, заглавная 'A'-'F' - дверь, которую можно пройти только уже имея соответствующий ключ. Верните минимальное число шагов, чтобы собрать ВСЕ ключи, присутствующие на карте. Если это невозможно, верните -1. Состояние поиска - не просто клетка, а пара (клетка, набор собранных ключей как битовая маска) - BFS по расширенному пространству состояний.
Сигнатура функции
shortest_path_keys(grid: list[str]) -> int
Примеры
ВходОжидаемый результат
[["@.a..", "###.#", "b.A.B"]]8
[["@..aA"]]3
1решили
1пытались
100%успешность
Войдите, чтобы решить →