n種類のキャラクタを1回ずつ使ってn文字の文字列を作るとします。
この条件で作ることができる文字列をすべて列挙するにはどうすればよいか?

例えば、A,B,C,Dの4つのキャラクタを使う場合、
ABCD
BACD
BCAD
BCDA
CABD
 :
みたいな結果がほしいです。

具体的なコードでなくてもいいので、とっかかりになるヒントをください。