I made a program to cheat at scrabble/word games. I can find words that "start with" a group of letters, "end with" a group of letters, or "contain" a group of letters in the middle. Furthermore, I can enter all my letters, and look for all the words that contain those letters. I can even enter a "*" for a blank tile (in Scrabble) and it will try all the possibilities for the blank tile.

What my program doesn't do is find all the subanagrams. For example, if I enter the letters "BNAG", my program would find only 4-letter words. I want it to also find all the 2- and 3- as well as 4-letter words.

What's the best logic/algorithm for grouping my letters into groups of 2, 3, 4, 5, etc.?