looks like you want permutations with repetition.
You can use product for that from intertools
def perm_Rep(n, r):
import string
from itertools import product
elements = string.ascii_letters.upper()[:n]
assert(r <= n), "r can't be greater than n !!!"
for x in product(elements, repeat=r):
yield ''.join(x)
from 5 letters: ABCDE choose 3
for el in (perm_Rep(5, 3)):
print(el)
AAA
AAB
AAC
AAD
AAE
ABA
ABB
ABC
ABD
ABE
ACA
ACB
ACC
ACD
ACE
ADA
ADB
ADC
ADD
ADE
AEA
AEB
AEC
AED
AEE
BAA
BAB
BAC
BAD
BAE
BBA
BBB
BBC
BBD
BBE
BCA
BCB
BCC
BCD
BCE
BDA
BDB
BDC
BDD
BDE
BEA
BEB
BEC
BED
BEE
CAA
CAB
CAC
CAD
CAE
CBA
CBB
CBC
CBD
CBE
CCA
CCB
CCC
CCD
CCE
CDA
CDB
CDC
CDD
CDE
CEA
CEB
CEC
CED
CEE
DAA
DAB
DAC
DAD
DAE
DBA
DBB
DBC
DBD
DBE
DCA
DCB
DCC
DCD
DCE
DDA
DDB
DDC
DDD
DDE
DEA
DEB
DEC
DED
DEE
EAA
EAB
EAC
EAD
EAE
EBA
EBB
EBC
EBD
EBE
ECA
ECB
ECC
ECD
ECE
EDA
EDB
EDC
EDD
EDE
EEA
EEB
EEC
EED
EEE