#include <bits/stdc++.h>
using namespace std;
int m;
string a, r;
int fwd[1025], bck[1025];
string w[105];
int pwr[1025];
void eval(string &word, string &arr, int res[]) {
  int size = 1;
  int hash1 = arr[0] - 'A' + 1;
  int shash1 = word[0] - 'A' + 1;
  for (int i = 1; i <= arr.size(); i++) {
    if (hash1 == shash1) {
      res[size] = i - size;
      if (size == word.size()) break;
      if (i >= a.size()) break;
      hash1 = hash1 * 29 + arr[i] - 'A' + 1;
      shash1 = shash1 * 29 + word[size] - 'A' + 1;
      size++;
    } else {
      if (i >= a.size()) break;
      hash1 = hash1 - pwr[size - 1] * (arr[i - size] - 'A' + 1);
      hash1 = hash1 * 29 + arr[i] - 'A' + 1;
    }
  }
}
int main() {
  pwr[0] = 1;
  for (int i = 1; i < 1025; i++) pwr[i] = pwr[i - 1] * 29;
  cin >> a;
  r = a;
  reverse(r.begin(), r.end());
  cin >> m;
  for (int i = 0; i < m; i++) cin >> w[i];
  int ans = 0;
  for (int i = 0; i < m; i++) {
    memset(fwd, -1, sizeof(fwd));
    memset(bck, -1, sizeof(bck));
    eval(w[i], a, fwd);
    reverse(w[i].begin(), w[i].end());
    eval(w[i], r, bck);
    reverse(w[i].begin(), w[i].end());
    if (0) {
      cout << w[i].size() << endl;
      for (int i = 0; i < (int)(4); i++) cout << fwd[i] << " ";
      cout << endl;
      ;
      for (int i = 0; i < (int)(4); i++) cout << bck[i] << " ";
      cout << endl;
      ;
      cout << endl;
    }
    int flag = 0;
    for (int c = 1; c < w[i].size(); c++) {
      if (fwd[c] == -1) break;
      if (bck[w[i].size() - c] == -1) continue;
      int l1 = fwd[c];
      int r1 = fwd[c] + c - 1;
      int r2 = a.size() - bck[w[i].size() - c] - 1;
      int l2 = r2 - w[i].size() + c + 1;
      if (r1 < l2) {
        flag = 1;
        break;
      }
    }
    ans += flag;
  }
  cout << ans << endl;
  return 0;
}
