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