def reconstruct_bwm(bwt: str) -> List[str]:
bwm = []
# first loop to create seeds for lines O(n)
for _ in range(0, len(bwt), 1):
bwm.append('')
for _ in range(0, len(bwt), 1):
for i in range(0, len(bwt), 1):
bwm[i] = bwt[i] + bwm[i]
yield [line for line in bwm]
bwm.sort()
yield [line for line in bwm]
I was doing some tests with your bwt decoding, and this method is too slow, this decoding approach is not recommended for large alphabets.