#include <bits/stdc++.h>
using namespace std;
const int maxn = 100050;
const int maxm = 1050;
char s[maxn], rev_s[maxn];
char t[maxm];
int f[maxm];
int pos[2][maxm];
int m;
void getfail(char *s, int len_s) {
  f[0] = f[1] = 0;
  for (int i = 1; i < len_s; i++) {
    int j = f[i];
    while (j && s[i] != s[j]) j = f[j];
    f[i + 1] = (s[i] == s[j]) ? j + 1 : 0;
  }
}
void solve() {
  scanf("%s", s);
  int len_s = strlen(s);
  for (int i = 0; i < len_s; i++) rev_s[len_s - i - 1] = s[i];
  rev_s[len_s] = '\0';
  scanf("%d", &m);
  int res = 0;
  for (int i = 1; i <= m; i++) {
    scanf("%s", t);
    int len_t = strlen(t);
    memset(pos, -1, sizeof(pos));
    getfail(t, len_t);
    int now = 0;
    for (int j = 0; j < len_s; j++) {
      while (now && s[j] != t[now]) now = f[now];
      if (s[j] == t[now]) now++;
      if (now && pos[0][now] == -1) pos[0][now] = j;
    }
    reverse(t, t + len_t);
    getfail(t, len_t);
    now = 0;
    for (int j = 0; j < len_s; j++) {
      while (now && rev_s[j] != t[now]) now = f[now];
      if (rev_s[j] == t[now]) now++;
      if (now && pos[1][now] == -1) pos[1][now] = len_s - j - 1;
    }
    for (int j = 1; j < len_t; j++) {
      int len1 = j, len2 = len_t - j;
      if (pos[0][len1] >= 0 && pos[1][len2] >= 0 &&
          pos[0][len1] < pos[1][len2]) {
        res++;
        break;
      }
    }
  }
  printf("%d\n", res);
}
int main() {
  solve();
  return 0;
}
