#include using namespace std; int n,a[10000][10000],viz[10000],da[10000]; int parcurge(int vf) {int x,i,in,sf,q[10000],viz2[10000]; in=sf=0; q[0]=vf; for(i=1;i<=n;i++)viz2[i]=0; viz2[vf]=1; while(in<=sf) {x=q[in++]; for(i=1;i<=a[x][0];i++) if(!viz2[a[x][i]]) {if(da[a[x][i]]&&!viz[a[x][i]]) {viz[a[x][i]]=1; return viz2[x]; } else {viz2[a[x][i]]=viz2[x]+1; q[++sf]=a[x][i]; } } } return 31999; } int main() {int c,k,i,b,maxim,s[10000]; cin>>n>>k; for(i=1;i<=k;i++) cin>>s[i]; for(i=1;i<=k;i++) {cin>>b;da[b]=1;} for(i=1;i>c>>b; a[c][0]++; a[c][a[c][0]]=b; a[b][0]++; a[b][a[b][0]]=c;} maxim=0; for(i=1;i<=k;i++) maxim=max(maxim,parcurge(s[i])); cout<