#include #include int main() { int N, Q; std::cin >> N >> Q; char* word = (char*)malloc(N + 1); char* subStr = (char*)malloc(N + 1); word[N] = '\0'; scanf ("%s", word); for(int i = 0; i < Q; i ++){ int size_of_word; std::cin >> size_of_word; subStr[size_of_word] = '\0'; scanf ("%s", subStr); char* subStrInWord = strstr(word, subStr); int occ = 0; while(subStrInWord != nullptr && *subStrInWord != '\0') { char* nextWord; nextWord = strstr(subStrInWord + size_of_word, subStr); if(nextWord == nullptr) nextWord = word + N; int addrShift = subStrInWord - word - (occ * size_of_word); int length = nextWord - subStrInWord; memcpy(word + addrShift, word + addrShift + (occ + 1) * size_of_word, length); occ++; subStrInWord = nextWord; } if(occ == 0){ std::cout << "0\n"; continue; } std::cout << occ << "\n"; N -= occ * size_of_word; word[N] = '\0'; subStr[size_of_word] = '\n'; } free(word); free(subStr); return 0; }