Algoritmo para devolver todas las combinaciones de k elementos de n

Quiero escribir una función que tome una matriz de letras como un argumento y un número de esas letras para seleccionar.

Supongamos que proporciona una matriz de 8 letras y desea seleccionar 3 letras de esa. Entonces deberías obtener:

8! / ((8 - 3)! * 3!) = 56

Arreglos (o palabras) a cambio consisten de 3 letras cada uno.