#include <bits/stdc++.h>
using namespace std;
int t,k;
int n,len;
string s;
string str[10005];
int sum[10005][10005];
bool check(int l,int r)
{
string s1 = s.substr(l, r - l + 1);
for(int i = 1;i <= n;i++)
{
if(s1.find(str[i]) == 0)
{
return true;
}
}
return false;
}
void input()
{
cin >> t >> k;
string ch;
for(int i = 1;i <= t;i++)
{
cin >> ch;
s += ch;
}
cin >> n;
len = s.length();
for(int i = 1;i <= n;i++)
{
cin >> str[i];
}
for(int i = len;i > 0;i--)
{
for(int j = i;j > 0;j--)
{
sum[j][i] = sum[j + 1][i];
if(check(j, i))
{
sum[j][i]++;
}
}
}
}
int dp[10005][10005];
void work()
{
for(int i = 0;i <= k;i++)
{
dp[i][i] = dp[i - 1][i - 1] + sum[i][i];
}
for(int i = 0;i < len;i++)
{
dp[i][1] = sum[1][i];
}
for(int i = 0;i < len;i++)
{
for(int j = 0;j <= k && j < i;j++)
{
for(int l = j;l < i;l++)
{
dp[i][j] = max(dp[i][j], dp[l][j - 1] + sum[l + 1][i]);
}
}
}
cout << dp[len - 1][k];
}
int main()
{
input();
work();
return 0;
}