fork download
  1. #include<bits/stdc++.h>
  2. #define MASK(i) (1LL << (i))
  3. #define BIT(x,i) (((x)>>(i))&1)
  4. using namespace std;
  5.  
  6. const long long MaxN = 25;
  7. const long long MaxDP = MASK(MaxN);
  8.  
  9. long long n, a[MaxN];
  10. int dp[MaxDP];
  11. string s[MaxN];
  12.  
  13. void input()
  14. {
  15. cin >> n;
  16.  
  17. for (long long i = 0; i < n; i++)
  18. {
  19. cin >> s[i];
  20. }
  21. }
  22.  
  23. void solve()
  24. {
  25. for (long long i = 0; i < n; i++)
  26. {
  27. for (long long j = 0; j < s[i].size(); j++)
  28. {
  29. a[i] |= MASK(s[i][j] - 'a');
  30. }
  31. }
  32.  
  33. dp[0] = 0;
  34.  
  35. for (long long i = 0; i < n; i++)
  36. {
  37. dp[MASK(i)] = a[i];
  38. }
  39.  
  40. for (long long mask = 1; mask < MASK(n); mask++)
  41. {
  42. long long tmp = mask & -mask;
  43.  
  44. dp[mask] = dp[tmp] | dp[mask ^ tmp];
  45. }
  46.  
  47. int full = MASK(26) - 1;
  48. long long ans = 0;
  49.  
  50. for (long long mask = 0; mask < MASK(n); mask++)
  51. {
  52. if (dp[mask] == full)
  53. {
  54. ans++;
  55. }
  56. }
  57.  
  58. cout << ans;
  59. }
  60.  
  61. int main()
  62. {
  63. ios_base::sync_with_stdio(0);
  64. cin.tie(0);
  65.  
  66. input();
  67. solve();
  68.  
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Standard output is empty