itertools.combinations_with_replacement(p, r)は,シーケンス:p から r 個選んだ組み合わせをイタレーターとして出力します.最初のAと4番目のAは別物として,扱われます.以下の例では,(A, b, c, A)からひとつを選択し,次も(A, b, c, A)からひとつを選択します.
import itertools
for x in itertools.combinations_with_replacement('AbcA', 2):
print('x:', x)
x: ('A', 'A') x: ('A', 'b') x: ('A', 'c') x: ('A', 'A') x: ('b', 'b') x: ('b', 'c') x: ('b', 'A') x: ('c', 'c') x: ('c', 'A') x: ('A', 'A')