basic.c 

Uses a single array for counting and representation. This results in less
complex and fast, but not expandable code.

basic2.c 

Uses two arrays, one for counting and another for representation. The
representation buffer is dynamically allocated (malloc). This is
superceded by dict.c

dict.c
Same as basic2, except that it also has the ability to index into a
dictionary file. 

dict2.c
Same as dict.c, except the representation buffers are static so they are
slightly faster. 
