#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")