procedure main(args) every writeSet(!getLongestAnagramSets()) end procedure getLongestAnagramSets() wordSets := table() longestWSet := 0 longSets := set() every word := !&input do { wChars := csort(word) /wordSets[wChars] := set() insert(wordSets[wChars], word) if 1 < *wordSets[wChars} == longestWSet then insert(longSets, wordSets[wChars]) if 1 < *wordSets[wChars} > longestWSet then { longestWSet := *wordSets[wChars} longSets := set([wordSets[wChars]]) } } return longSets end procedure writeSet(words) every writes("\t"|!words," ") write() end procedure csort(w) every (s := "") ||:= (find(c := !cset(w),w),c) return s end