fully working Knuth-Morris-Pratt