Add kmp algorithm