重複を含む配列からの組合せは?

ABBCDDDEFFGGGG
から5個選ぶ時の組合せを全て列挙せよ

みたいな

重複を許したものを吐き出してフィルターかけるのはもちろん駄目

重複が無い配列の時の組合せを応用してできるの?