1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <bits/stdc++.h>
using namespace std;

void solve_case(string &s) {
	int n = s.size();
	int N = (1 << n);
	unordered_map<long long, int> cnt;
	for (int mask = 0; mask < N; ++mask) {
		long long curr = 0;
		for (int bit = 0; bit < n; ++bit) {
			if ((1 << bit) & mask) {
				curr *= 7;
				curr += s[bit] - 'a' + 1;
			}
		}
		++cnt[curr];
	}
	int ans = 0;
	for (auto p : cnt) {
		if (p.second >= 2) ++ans;
	}
	cout << ans << "\n";
}

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int n, q; cin >> n >> q;
	string s; cin >> s;
	solve_case(s);
	for (int i = 0; i < q; ++i) {
		int pos; cin >> pos;
		char c; cin >> c;
		s[pos - 1] = c;
		solve_case(s);
	}
}