Cipher Map Cipher Map

Помогите Софи написать дешифратор для паролей, которые Никола зашифровал с помощью шифровальной решетки. Шифрорешетка - это квадрат 4 на 4 с четырьмя вырезанными окошками. Поместите решетку на листе бумаги такого же размера с буквами, выписываете первые 4 символа, которые видно в окошках (см. рисунок). Затем поверните решетку на 90 градусов по часовой стрелке. Выпишите следующие символы и повторите поворот. В итоге процедура повторяется 4 раза. Таким образом сложно узнать пароль без специальной решетки.

Напишите программу, которая поможет проводить данную процедуру.

Шифровальная решетка и зашифрованный пароль представлены, как массив строк.

Входные данные: Шифровальная решетка и зашифрованный пароль, как список (list) строк.

Выходные данные: Пароль, как строка.

Примеры:

recallPassword(
    ['X...',
     '..X.',
     'X..X',
     '....'],
    ['itdf',
     'gdce',
     'aton',
     'qrdi']) == 'icantforgetiddqd'

recallPassword(
    ['....',
     'X..X',
     '.X..',
     '...X'],
    ['xhwc',
     'rsqx',
     'xqzz',
     'fyzr']) == 'rxqrwsfzxqxzhczy'

Как это используется: Попрактикуйтесь работать с двумерными массивами. Ну а также ознакомитесь с оригинальной системой шифрования.

Предусловия: len(cipher_grille) == 4
len(ciphered_password) == 4
all(len(row) == 4 for row in ciphered_password)
all(len(row) == 4 for row in cipher_grille)
all(all(ch in string.ascii_lowercase for ch in row) for row in ciphered_password)
all(all(ch == "X" or ch == "." for ch in row) for row in cipher_grille)