procedure main() a := sort(wordlengths()) # get sorted list i := 0 while pair := a[i +:= 1] do write(left(pair[1] || ":",4),right(pair[2],6)) end procedure wordlengths() wchar := &lcase ++ &ucase ++ '\'-' lengths := table(0) while line := read() do { i := 1 while j := upto(wchar,line,i) do { i := many(wchar,line,j) lengths[*line[i:j]] +:= 1 # increment count } } return lengths end