#include <cstdio>
#include <iostream>
#include <iterator>
#include <string>
using namespace std;
using LNode = struct LNode{
string s;
int fang=0;
LNode *next;
};
using List = LNode *;
int change(List a,int len_a,List b){
if(len_a==1){
List bp1=b->next;
while (bp1!=nullptr) {
if(a->next->s==bp1->next->s)
return -1;
bp1=bp1->next;
}
}
int i=0;
int j=0;
List q=new LNode;
List bp=b->next;
while (bp!=nullptr) {
List ap=a->next;
while (ap!=nullptr) {
if(ap->s==bp->s){
if(ap->fang==0){
ap->fang=1;
j++;
}
q=ap;
ap=nullptr;
}else {
ap=ap->next;
}
}
if(j==len_a){
i++;
j=1;
ap=a->next;
while (ap!=nullptr) {
ap->fang=0;
ap=ap->next;
}
q->fang=1;
}
bp=bp->next;
}
return i;
}
int main() {
int n1,n2,len_a;
while(cin>>n1){
len_a=n1;
List head=new LNode;
head->next=nullptr;
List p=head;
while (n1--) { // 注意 while 处理多个 case
List node=new LNode;
cin>>node->s;
node->next=nullptr;
p->next=node;
p=p->next;
}
cin>>n2;
List head2=new LNode;
head2->next=nullptr;
List q=head2;
while (n2--) { // 注意 while 处理多个 case
List node=new LNode;
cin>>node->s;
node->next=nullptr;
q->next=node;
q=q->next;
}
cout <<change(head,len_a, head2)<<endl;
}
}
// 64 位输出请用 printf("%lld")