#include <bits/stdc++.h>
using namespace ::std;
const long long maxn = 1e5 + 500;
const long long maxm = 1050;
const long long mod = 1e9 + 7;
const long long inf = 1e9 + 500;
long long stat[maxn];
long long rstat[maxn];
long long f[maxm];
long long dfa[maxm][700];
int main() {
  string s;
  cin >> s;
  long long n = s.size();
  long long q;
  cin >> q;
  long long ans = 0;
  for (long long qw = 0; qw < q; qw++) {
    for (long long i = 0; i < maxm; i++) {
      for (char c = 'A'; c <= 'Z'; c++) {
        dfa[i][c] = 0;
      }
    }
    string t;
    cin >> t;
    long long m = t.size();
    if (m > 1) {
      f[1] = 0;
      for (long long i = 1; i < m; i++) {
        long long st = f[i];
        while (st > 0 && t[st] != t[i]) {
          st = f[st];
        }
        if (t[st] == t[i]) {
          st++;
        }
        f[i + 1] = st;
      }
      for (long long i = 0; i <= m; i++) {
        for (char c = 'A'; c <= 'Z'; c++) {
          if (i < m && t[i] == c) {
            dfa[i][c] = i + 1;
          } else {
            dfa[i][c] = dfa[f[i]][c];
          }
        }
      }
      stat[0] = dfa[0][s[0]];
      for (long long i = 1; i < n; i++) {
        stat[i] = dfa[stat[i - 1]][s[i]];
      }
      reverse(t.begin(), t.end());
      for (long long i = 0; i < maxm; i++) {
        for (char c = 'A'; c <= 'Z'; c++) {
          dfa[i][c] = 0;
        }
      }
      f[1] = 0;
      for (long long i = 1; i < m; i++) {
        long long st = f[i];
        while (st > 0 && t[st] != t[i]) {
          st = f[st];
        }
        if (t[st] == t[i]) {
          st++;
        }
        f[i + 1] = st;
      }
      for (long long i = 0; i <= m; i++) {
        for (char c = 'A'; c <= 'Z'; c++) {
          if (i < m && t[i] == c) {
            dfa[i][c] = i + 1;
          } else {
            dfa[i][c] = dfa[f[i]][c];
          }
        }
      }
      rstat[n - 1] = dfa[0][s[n - 1]];
      for (long long i = n - 2; i >= 0; i--) {
        rstat[i] = dfa[rstat[i + 1]][s[i]];
      }
      for (long long i = 1; i < n; i++) {
        stat[i] = max(stat[i], stat[i - 1]);
      }
      bool ok = 0;
      for (long long i = 1; i < n; i++) {
        if (rstat[i] + stat[i - 1] >= t.size()) {
          ok = 1;
        }
      }
      ans += ok;
    }
  }
  cout << endl << ans;
}
