KMP improved algorithm