#include <bits/stdc++.h>
using namespace std;
using map_t = unordered_map<char, int>;
map_t wyst, wszystk;
map_t odkr;
bool pasuje(string a, string b) {
  bool ok = true;
  for (int i = 0; i < a.size() && ok; ++i) {
    if ((a[i] != b[i] && a[i] != '*') || (a[i] == '*' && odkr[b[i]] == 1))
      ok = false;
  }
  return ok;
}
int main() {
  int n, m;
  string s1;
  cin >> n >> s1;
  for (int i = 0; i < s1.size(); ++i) {
    if (s1[i] != '*') odkr.insert(make_pair(s1[i], 1));
  }
  cin >> m;
  int zle = 0;
  for (int i = 0; i < m; ++i) {
    string s;
    cin >> s;
    if (pasuje(s1, s)) {
      for (int j = 0; j < s.size(); ++j) {
        if (!odkr[s[j]]) wyst[s[j]] = 1;
      }
      if (wyst.empty()) ++zle;
      for (auto v : wyst) {
        ++wszystk[v.first];
      }
      wyst.clear();
    } else
      ++zle;
  }
  int res = 0;
  for (auto v : wszystk) {
    if (v.second == m - zle) ++res;
  }
  cout << res << "\n";
  return 0;
}
