Can someone tell how should I learn string-processing algorithms? I currently know only z-function. Where to start learning suffix-array, suffix-tree, suffix-automaton and also in what order. Also is there a good collection of question related to this topic.