Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define F first
  4. #define S second
  5. #define pb push_back
  6. #define ll long long
  7. #define ld long double
  8. #define FILE "answer"
  9. #define pii pair <int,int>
  10.  
  11. using namespace std;
  12.  
  13. const int mod = 1e9 + 7;
  14. const int INF = 1e9;
  15.  
  16. int bad[1005];
  17. string s, ss[10005];
  18. int f[1005][228];
  19. int cnt[228];
  20.  
  21. int main() {
  22. ios_base::sync_with_stdio(0);
  23. cin.tie(0);
  24. cout.tie(0);
  25. //freopen("input.txt","r",stdin);
  26. //freopen("output.txt","w",stdout);
  27. int n;
  28. cin >> n;
  29. // string s;
  30. cin >> s;
  31. int kc = 0;
  32. for (int i=0; i<n; i++) {
  33. bad[s[i]] = 1;
  34. kc += s[i] == '*';
  35. }
  36. int m;
  37. cin >> m;
  38. for (int i=0; i<m; i++) {
  39. cin >> ss[i];
  40. }
  41. vector <string> good;
  42. int res = 0;
  43. for (int i=0; i<m; i++) {
  44. int f = 0;
  45. for (int j=0; j<n; j++) {
  46. if (bad[ss[i][j]] && s[j] == '*') {
  47. f = 1;
  48. break;
  49. }
  50. if (s[j] != '*' && ss[i][j] != s[j]){
  51. f = 1;
  52. break;
  53. }
  54. }
  55. if (!f) good.pb(ss[i]);
  56. }
  57. for (int i=0; i<good.size(); i++) {
  58. for (auto x : good[i]) {
  59. if (bad[x]) continue;
  60. if (!f[i][x]) cnt[x]++;
  61. f[i][x] = 1;
  62. }
  63. }
  64. for (int i=0; i<228; i++) {
  65. if (!bad[i]) res += cnt[i] == good.size();
  66. }
  67. cout << res << endl;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement