@prog anagrams.muf 1 999 d 1 i : say me @ swap notify ; : anagram-list (s -- s1 ... sN N) dup not if pop 0 exit then 1 strcut anagram-list dup 2 + rotate over 1 < if swap pop 1 exit then over 1 -1 for ( sN ... s1 N c i ) swap over 3 + rotate 4 rotate 1 - -4 rotate ( sN ... s1 N i c si ) 0 over strlen 1 for over swap strcut 4 pick swap strcat strcat 4 pick 4 + -1 * rotate 4 rotate 1 + -4 rotate loop pop swap pop loop pop ; : main anagram-list "" swap 1 -1 for pop over strlen over strlen + 1 + 78 > if 1 strcut say pop "" then " " rot strcat strcat loop 1 strcut say pop ; . c q