KMP Algorithm.