Weiner's Algorithm B maintains several auxiliary data structures, to achieve an over all run time linear in the size of the constructed trie. The latter can still be O ( n 2 ) {\displaystyle O(n^{2})} nodes, e.g. for S = a n b n a n b n $ . {\displaystyle S=a^{n}b^{n}a^{n}b^{n}\$.} Weiner's Algorithm C finally uses compressed tries to achieve linear overall storage size and run time.[3] Donald Knuth subsequently characterized the latter as "Algorithm of the Year 1973".[citation needed] The text book Aho, Hopcroft & Ullman (1974, Sect.9.5) reproduced Weiner's results in a simplified and more elegant form, introducing the term position tree.