a,b:string;
c:array[0..6]of string;
p,k,s,q,w,e,n:longint;
f,g:array[0..200,0..40]of longint;
l:array[0..200]of longint;
begin
readln(p,k);
for q:=1 to p do begin readln(b);a:=a+b;end;
readln(s);
for q:=1 to s do readln(c[q]);
for q:=1 to s-1 do
for w:=1 to s-q do
if length(c[w])>length(c[w+1]) then
begin
c[0]:=c[w];
c[w]:=c[w+1];
c[w+1]:=c[0];
end;
n:=20*p;
for q:=1 to n do
begin
l[q]:=n+1;
for w:=1 to s do
if copy(a,q,length(c[w]))=c[w] then
begin
l[q]:=length(c[w])+q-1;break;
end;
end;
for q:=1 to n do
for w:=1 to n do
for e:=q to w do
if l[e]<=w then inc(g[q,w]);
for q:=1 to n do f[q,1]:=g[1,q];
for w:=2 to k do
for q:=w to n-k+w do
begin
f[q,w]:=-maxlongint;
for e:=w-1to q-1 do
if f[e,w-1]+g[e+1,q]>f[q,w]then f[q,w]:=f[e,w-1]+g[e+1,q];
end;
writeln(f[n,k]);
end.
wa20