Yo hice un programa de análisis de frecuencia y lo que utilicé fue un lemario.
lemario. LISTADO, conjunto de lemas que forman un diccionario.
http://olea.org/proyectos/lemarios/Es un archivo .txt con un montón de palabras en español. A partir de ahí no es difícil hacer un programa que haga lo que tú quieres. Pides las letras al usuario, cuentas cuantas letras se han introducido y luego buscas palabras que tengan esa misma longitud o menor y que contengan solo las letras introducidas.
Yo haría una función que comprobase si una letra está contenida en una palabra, y luego recorrería todas las letras comprobando si están contenidas o no en la palabra.
Habría que tener en cuenta que hay letras que se pueden repetir en una palabra. De todas formas eso ya tendrás que decidir tú si lo implementas o no.
También se podrían generar combinaciones aleatorias de esas letras y comprobar en el lemario si la palabra generada existe, si existe se muestra al usuario y sino no, pero eso creo que sería bastante más lento.
Estos son combinaciones con repetición de Matemática Discreta [ironia]que me gustaba a mí esa asignatura de 1º[/ironia] xDD.
Creo que esa sería la lógica del programa.Puedes intentar hacerlo y si ves que te atascas en algún sitio pues aquí estamos para ayudar.
Según tu pregunta no me parece que hables nada de programación, si solo preguntas por el programa y no el como hacerlo te equivocastes de foro, deberías preguntar en el foro de
Software.Un saludo.