func ishex w$ . c$ = "" for c$ in strchars w$ h = strcode c$ if h < 97 or h > 102 : break 1 . return if c$ = "" . global w$[] part2 . func digsum num . while num > 0 s += num mod 10 num = num div 10 . return s . func digroot x . while x > 9 : x = digsum x return x . func dec w$ . for c$ in strchars w$ r = r * 16 + strcode c$ - 87 . return r . func comp a$ b$ . if part2 = 1 return if dec a$ > dec b$ . return if digroot dec a$ < digroot dec b$ . proc sort . for i = len w$[] - 1 downto 1 for j = 1 to i if comp w$[j] w$[j + 1] = 1 swap w$[j] w$[j + 1] . . . . proc init . repeat s$ = input until s$ = "" if len s$ >= 4 and ishex s$ = 1 w$[] &= s$ . . . init sort proc show . for w$ in w$[] w = dec w$ print digroot w & " " & w$ & " " & w . print len w$[] & " words" print "" . show # func dist w$ . len d[] 6 for c$ in strchars w$ d[strcode c$ - 96] = 1 . for e in d[] : s += e return s . for w$ in w$[] if dist w$ > 3 : w2$[] &= w$ . swap w$[] w2$[] part2 = 1 sort show # # the content of unixdict.txt input_data 10th ababa beebe decade facade