function pairwiseAnagrams X if the optionkey is down then breakpoint put the long seconds into T put empty into itemsSoFar repeat for each item W in X put word 1 to -1 of W into W if D[W] = 1 then next repeat put 1 into D[W] repeat for each item W2 in itemsSoFar put W,W2 & cr after WPairs[sortChars(W & W2,true)] end repeat put W & comma after itemsSoFar end repeat repeat for each key K in WPairs put empty into pairsSoFar repeat for each line L in WPairs[K] repeat for each line L2 in pairsSoFar if item 1 of L is among the items of L2 or item 2 of L is among the items of L2 then next repeat put L && "and" && L2 & cr after R end repeat put L & cr after pairsSoFar end repeat end repeat put the long seconds - T return char 1 to -2 of R end pairwiseAnagrams function sortChars X,lettersOnly get charsToItems(X,lettersOnly) sort items of it return itemsToChars(it) end sortChars   function charsToItems X,lettersOnly repeat for each char C in X if lettersOnly and C is not in "abcdefghijklmnopqrstuvwxyz" then next repeat put C & comma after R end repeat return char 1 to -2 of R end charsToItems   function itemsToChars X replace comma with empty in X return X end itemsToChars