#include<bits/stdc++.h>
using namespace std;
int p,k,n;
int sum[205][205];
int dp[205][45];
map <int ,map<int ,int> > m;
string s;
string ss[10];
int check(int l,int r){
string now=s.substr(l,r-l+1);
for (int i=1;i<=n;++i){
if(now.find(ss[i])==0) return 1;
}
return 0;
}
int main(){
cin>>p>>k;
for (int i=1;i<=p;++i){
string x;
cin>>x;
s+=x;
}
cin>>n;
for (int i=1;i<=n;++i){
cin>>ss[i];
}
for (int i=s.size()-1;i>=0;--i){
for (int j=i;j>=0;--j){
sum[j][i]=sum[j+1][i];
if(check(j,i)) sum[j][i]++;
}
}
for (int i=0;i<=s.size()-1;++i){
dp[i][i]=dp[i-1][i-1]+sum[i][i];
dp[i][0]=0;
dp[i][1]=sum[0][i];
}
for (int i=s.size()-1;i>=0;--i){
for (int j=1;j<=k&&j<=i;++j){
for (int k=i;k>=j;--k){
dp[i][j]=max(dp[i][j],dp[k][j-1]+sum[k+1][i]);
}
}
}
cout<<dp[s.size()-1][k];
return 0;
}