#include <bits/stdc++.h>
using namespace std;
long long MOD = 1e9 + 7;
long long MAX = 1e17;
string s, s2, p, t;
int l, ans = 0, a[1005], b[100005], boo[1005], boo2[1005];
void kmp(string &s) {
  int p = 0, q = 1;
  memset(a, 0, sizeof(a));
  int n = s.size();
  while (q < n) {
    if (s[p] == s[q])
      a[q++] = ++p;
    else if (p == 0)
      a[q++] = 0;
    else
      p = a[p - 1];
  }
}
void func() {
  kmp(p);
  memset(boo, 0xff, sizeof(boo));
  int c = 0, d = 0;
  int n = s.size();
  while (d < n) {
    if (s[d] == p[c]) {
      b[d] = c + 1;
      if (boo[c + 1] == -1) boo[c + 1] = d;
      d++;
      c++;
    } else if (c == 0) {
      b[d] = 0;
      d++;
    } else
      c = a[c - 1];
  }
  kmp(t);
  memset(boo2, 0xff, sizeof(boo2));
  c = d = 0;
  while (d < n) {
    if (s2[d] == t[c]) {
      b[d] = c + 1;
      if (boo2[c + 1] == -1) {
        boo2[c + 1] = n - 1 - d;
        if (boo2[c + 1] > boo[l - c - 1] and boo[l - c - 1] != -1) {
          ans++;
          return;
        }
      }
      d++;
      c++;
    } else if (c == 0)
      b[d++] = 0;
    else
      c = a[c - 1];
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  ;
  cin >> s;
  int n = s.size();
  s2 = s;
  reverse(s2.begin(), s2.end());
  int m;
  cin >> m;
  for (int i = 0; i < m; i++) {
    cin >> p;
    t = p;
    l = p.size();
    reverse(t.begin(), t.end());
    func();
  }
  cout << ans << endl;
}
