#include <fstream>
#include <string>
#include <memory.h>

using namespace std;

const int kMaxSize = 100;

int n, m, sol;
string R[kMaxSize], word;
bool chars[kMaxSize], covered;

int main()
{
    ifstream in("reci.in");
    ofstream out("reci.out");
    in >> n;
    for (int i = 0; i < n; i++)
    {
        in >> R[i];   
    }
    in >> m;
    for (int i = 0; i < m; i++)
    {
        in >> word;
        memset(chars, false, word.length());
        for (int j = 0; j < n; j++)
        {
            for (size_t idx = word.find(R[j], 0); idx != string::npos; idx = word.find(R[j], idx + 1))
            {
                for (size_t k = 0; k < R[j].length(); k++)
                {
                    chars[idx + k] = true;   
                }
            }
        }
        covered = true;
        for (size_t j = 0; j < word.length() && covered; j++)
        {
            covered = chars[j];
        }
        if (covered)
        {
            sol++;   
        }
    }
    
    out << sol;
    in.close();
    out.close();
    return 0;
}
