#include <iostream>
#include <vector>
#include <string>
using namespace std;
int findMinSwitches(const vector<string>& proxies,const vector<string>& servers);

int main() {
    int a,b;
    scanf("%d",&a);
    vector<string> proxies(a); // 定义代理服务器
    for(int i=0;i<a;i++)cin>>proxies[i];
    scanf("%d",&b);
    vector<string> servers(b); // 定义服务器
    for(int i=0;i<b;i++)cin>>servers[i];
    cout<<findMinSwitches(proxies,servers)<<endl;
}
// 64 位输出请用 printf("%lld")

// 返回最小转换数
int findMinSwitches(const vector<string> &proxies,const vector<string> &servers){
    int n=proxies.size();
    int m=servers.size();
    int current_proxy=-1; // 当前未选择代理
    int switch_count=0; // 切换代理次数

    for(int j=0;j<m;j++){
        if(current_proxy==-1||proxies[current_proxy]==servers[j]){// 第一次选择代理或要切换代理(遇到一样IP)
            if(current_proxy!=-1) switch_count++;
            int best_proxy=-1;
            int best_adaptCount=0;
            for(int i=0;i<n;i++){
                int count=0;
                for(int k=j;k<m;k++){
                    if(servers[k]==proxies[i])break;
                    count++;
                }
                if(count>best_adaptCount){
                    best_proxy=i;
                    best_adaptCount=count;
                }
            }
            current_proxy=best_proxy;
            if(current_proxy==-1) return -1;
        }
    }
    return switch_count;
}