#include #include #include using namespace std; #define FF(x, y, z) for (int x = y; x < z; x++) int main() { int n, m; cin >> n >> m; string s; cin >> s; int next[100005]; vector starts[255]; FF(i, 0, s.size()) { next[i] = i == s.size() - 1 ? -2 : i + 1; starts[s[i]].push_back(i); } int start_index = 0; FF(i, 0, m) { int x; cin >> x; string repl; cin >> repl; char start_c = repl[0]; int res = 0; FF(pos, 0, starts[start_c].size()) { int idx = starts[start_c][pos]; FF(k, 0, repl.size()) { if (idx < 0) { idx = -1; break; } if (s[idx] != repl[k]) idx = -1; else idx = next[idx]; } if (idx == -1) continue; int s_i = starts[start_c][pos]; while (s_i != idx) { int o_s_i = s_i; s_i = next[s_i]; next[o_s_i] = -1; } int s_i2 = start_index; while (next[s_i2] != starts[start_c][pos]) s_i2 = next[s_i2]; if (starts[start_c][pos] == start_index) { start_index = idx; } next[s_i2] = idx; res++; } cout << start_index << endl; cout << res << endl; } return 0; }