#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long n;
cin >> n;
vector<vector<int>> cnt(n, vector<int>(26, 0));
for (int i = 0; i < n; i++) {
string s;
cin >> s;
for (int j = 0; j < s.size(); j++) cnt[i][s[j] - 'a']++;
}
int totalMask = 1 << n;
vector<int> f(totalMask, 0);
for (int mask = 1; mask < totalMask; mask++) {
vector<int> mn(26, 1e6);
for (char c = 0; c < 26; c++) {
for (int i = 0; i < n; i++) {
if (mask & (1 << i)) {
mn[c] = min(mn[c], cnt[i][c]);
}
}
if (mn[c] == 1e6) mn[c] = 0;
f[mask] += mn[c];
}
}
int ans = 0;
for (int mask = 1; mask < totalMask; mask++) {
int cntBits = __builtin_popcount(mask);
if (cntBits % 2 == 0) ans -= f[mask];
else ans += f[mask];
}
cout << 1 + ans;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |