add kmp algo