#include <iostream>
#include <vector>
using namespace std;
// 主要思路就是从开始找到最远的那个需要切换的位置,然后将当前的网址切换成最远的那个,这样只需要在最远的时候切换即可。
int main() {
int n; cin >> n;
vector<string> proxy(n);
for(int i=0; i<n; i++) cin >> proxy[i];
int m; cin >> m;
vector<string> dest(m);
for(int i=0; i<m; i++) cin >> dest[i];
int movIndex = 0;
int count = 0;
int flag = 0;
while(movIndex<m){
//找到最远的color
int maxIndex = movIndex;
string current = dest[movIndex];
int k = 0; // 用来记录在寻找下个需要切换的网址中,是否存在这样一个情况:
//proxy中有一个或者多个网址,在dest的movIndex位置之后中没有出现,如果是,那么就直接break。
for(int colorIndex = 0; colorIndex<n; colorIndex++){
if(proxy[colorIndex]==current) {
flag =1;
continue;
}
for(int j=movIndex; j<m; j++){
if(dest[j]==proxy[colorIndex]){
k++;
maxIndex = max(maxIndex, j);
break;
}
}
}
if(maxIndex > movIndex && k>=n-1){
movIndex = maxIndex;
count++;
}else break;
}
if(flag==1 && proxy.size()==1)
cout << -1 << endl;
else
cout << count << endl;
}