All permutations of a Windows license key
Disclaimer: Yes, I know that this is not Python code. It just popped into my mind and I simply had to write it down.
The simplest way is the use of shell expansion:
$ echo MPP6R-09RXG-2H{8,B}MT-{B,8}K{H,N}M9-V{6,G}C8RMPP6R-09RXG-2H8MT-BKHM9-V6C8RMPP6R-09RXG-2H8MT-BKHM9-VGC8RMPP6R-09RXG-2H8MT-BKNM9-V6C8RMPP6R-09RXG-2H8MT-BKNM9-VGC8RMPP6R-09RXG-2H8MT-8KHM9-V6C8RMPP6R-09RXG-2H8MT-8KHM9-VGC8RMPP6R-09RXG-2H8MT-8KNM9-V6C8RMPP6R-09RXG-2H8MT-8KNM9-VGC8RMPP6R-09RXG-2HBMT-BKHM9-V6C8RMPP6R-09RXG-2HBMT-BKHM9-VGC8RMPP6R-09RXG-2HBMT-BKNM9-V6C8RMPP6R-09RXG-2HBMT-BKNM9-VGC8RMPP6R-09RXG-2HBMT-8KHM9-V6C8RMPP6R-09RXG-2HBMT-8KHM9-VGC8RMPP6R-09RXG-2HBMT-8KNM9-V6C8RMPP6R-09RXG-2HBMT-8KNM9-VGC8R
Another way to generate the combinations
>>> ['MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R' % (a, b, c, d)... for a in '8B' for b in 'B8' for c in 'HN' for d in '6G']['MPP6R-09RXG-2H8MT-BKHM9-V6C8R', 'MPP6R-09RXG-2H8MT-BKHM9-VGC8R', 'MPP6R-09RXG-2H8MT-BKNM9-V6C8R', 'MPP6R-09RXG-2H8MT-BKNM9-VGC8R', 'MPP6R-09RXG-2H8MT-8KHM9-V6C8R', 'MPP6R-09RXG-2H8MT-8KHM9-VGC8R', 'MPP6R-09RXG-2H8MT-8KNM9-V6C8R', 'MPP6R-09RXG-2H8MT-8KNM9-VGC8R', 'MPP6R-09RXG-2HBMT-BKHM9-V6C8R', 'MPP6R-09RXG-2HBMT-BKHM9-VGC8R', 'MPP6R-09RXG-2HBMT-BKNM9-V6C8R', 'MPP6R-09RXG-2HBMT-BKNM9-VGC8R', 'MPP6R-09RXG-2HBMT-8KHM9-V6C8R', 'MPP6R-09RXG-2HBMT-8KHM9-VGC8R', 'MPP6R-09RXG-2HBMT-8KNM9-V6C8R', 'MPP6R-09RXG-2HBMT-8KNM9-VGC8R']>>>