read_file(name) := block([file, s, L], file: openr(name), L: [], while stringp(s: readline(file)) do L: cons(s, L), close(file), L)$ u: read_file("C:/my/mxm/unixdict.txt")$ v: map(lambda([s], [ssort(s), s]), u)$ w: sort(v, lambda([x, y], orderlessp(x[1], y[1])))$ ana(L) := block([m, n, p, r, u, v, w], L: endcons(["", ""], L), n: length(L), r: "", m: 0, v: [ ], w: [ ], for i from 1 thru n do ( u: L[i], if r = u[1] then ( w: cons(u[2], w) ) else ( p: length(w), if p >= m then ( if p > m then (m: p, v: []), v: cons(w, v) ), w: [u[2]], r: u[1] ) ), v)$ ana(w); /* [["evil", "levi", "live", "veil", "vile"], ["elan", "lane", "lean", "lena", "neal"], ["alger", "glare", "lager", "large", "regal"], ["angel", "angle", "galen", "glean", "lange"], ["caret", "carte", "cater", "crate", "trace"], ["abel", "able", "bale", "bela", "elba"]] */