RT,感觉思路没什么问题
#include<bits/stdc++.h>
#define int long long
using namespace std;
map<string,bool>mp;
map<string,bool>mppp;
map<string,int>mpp;
string a[1000005];
signed main(){
int n,m;
cin>>n;
for(int i=1;i<=n;i++){
string s;
cin>>s;
mp[s]=true;
}
cin>>m;
int cnt=0;
for(int i=1;i<=m;i++){
cin>>a[i];
string s=a[i];
if(!mppp[s]){
mppp[s]=true;
if(mp[s])cnt++;
}
}
int l=1,r=0,cc=0,ans=INT_MAX;
while(r<m){
mpp[a[++r]]++;
if(mp[a[r]]==1)cc++;
while(mpp[a[l]]>1||mp[a[l]]==0&&l<=r){
mpp[a[l]]--;
l++;
}
if(cc==cnt){
ans=min(ans,r-l+1);
}
}
cout<<cnt<<endl<<ans;
return 0;
}