procedure tabwords() wchar := &lcase ++ &ucase ++ '\'-' words := table(0) while line := read() do { i := 1 while j := upto(wchar,line,i) do { i := many(wchar,line,j) words[line[i:j]] +:= 1 # increment count } } return words end procedure main() wlist := sort(tabwords()) # get sorted list i := 0 while pair := wlist[i +:= 1] do write(left(pair[1],12),right(pair[2],3)) end