Decifrar a cifra afim

Crie uma função que recebe uma string de texto cifrado (alfabeto inglês) toda em letras minúsculas, uma função de criptografia e a converte em texto simples usando a função de descriptografia afim.

Função de descriptografia

Na cifra afim, as letras de um alfabeto de tamanho m são primeiro mapeadas para os inteiros no intervalo 0 … m − 1. Em seguida, ela usa aritmética modular para transformar o inteiro correspondente a cada letra do texto simples em outro inteiro correspondente a uma letra do texto cifrado. A função de criptografia para uma única letra é E(x)=(ax+b)mod m, onde o módulo m é o tamanho do alfabeto e a e b são as chaves da cifra. O valor de a deve ser escolhido de modo que a e m sejam coprime.

A função de descriptografia é D(x)=a^(-1)*(x-b)mod m, onde a^(-1) é o inverso multiplicativo modular de a módulo m ie a * a^(-1) mod m == 1. O inverso multiplicativo de a só existe se a and m are coprime. Portanto, sem a restrição sobre a, a descriptografia pode não ser possível.

O alfabeto será composto pelas letras a a z e terá os valores correspondentes a=0, b=1, c=2, d=3 ... z=25.

Exemplos

affine_decrypt("ucncmrwt", "(x+2)%26") ➞ "salakpur"
# a = 1, b = 2, encryption = "(x+2)%26".
# Modular Multiplicative Inverse of 1 =  1.
# We apply the decryption function for the letters.

affine_decrypt("hezmrc", "(3x+4)%26") ➞ "bahuni"
# a = 3, b = 4, encryption = "(x+2)%26".
# Modular Multiplicative Inverse of 3 = 9.
# We apply the decryption function for the letters.

Observações

Para o problema 1 =< a <= 11 , 1 =< b <= 9 , m = 26