#include using namespace std; struct StringMatchingAutomaton { vector kmp; vector> next; StringMatchingAutomaton(string s) : kmp(s.size() + 1), next(s.size() + 1, vector(26)) { for (int i = 0; i < s.size(); i++) next[i][s[i] - 'A'] = i + 1; for (int i = 1; i <= s.size(); i++) { for (int j = 0; j < 26; j++) { if (i == s.size() || s[i] != j + 'A') { next[i][j] = next[kmp[i]][j]; } else { kmp[i + 1] = next[kmp[i]][j]; } } } } vector &operator[](int k) { return next[k]; } }; int main() { string S; cin >> S; int m; cin >> m; int ans = 0; for (int ii = 0; ii < m; ii++) { string c; cin >> c; StringMatchingAutomaton am(c); int v = 0; for (char ch : S) { v = am[v][ch - 'A']; if (v == c.size()) ans++; } } cout << ans << endl; }