Como obter todas as combinações exclusivas n-longas de um conjunto de elementos duplicáveis?

Eu encontrei muitas soluções dando uma coleção de elementos combinados em todas as ordens possíveis, mas todos eles usam cada elemento apenas uma vez em cada resultado, enquanto eu preciso que eles sejam tratados como reutilizáveis.

Por exemplo, se os elementos de entrada forem {"a", "b", "c"} e o número for 2, a saída será {"a", "a"}, {"a", "b"}, { "a", "c"}, {"b", "a"}, {"b", "b"}, {"b", "c"}, {"c", "a"}, { "c", "b"}, {"a", "c"}.

questionAnswers(5)

yourAnswerToTheQuestion