#include <iostream>
#include<vector>

using namespace std;

int list[10005],i,j,n,m,k,list_n,final_list[10005],x,y,val[10005],minn;

vector<int> t[10005];


void caut(int nr_l)
	{	
	int vv=val[list[nr_l]];
	if(nr_l<list_n)
	{	
			for(i=0;i<t[list[nr_l]].size();i++)
						if(val[t[list[nr_l]][i]]>vv+1||val[t[list[nr_l]][i]]==0)
								{
									val[t[list[nr_l]][i]]=vv;
									list[list_n]=i;
									list_n++;
								}
	caut(nr_l+1);
	}

	}

int main() {
	cin>>n>>k;
	for(i=0;i<k;i++)cin>>list[i];
	list_n=k;
	for(i=0;i<k;i++)cin>>final_list[i];
	
	for(i=1;i<n;i++)cin>>x>>y,t[x].push_back(y),t[y].push_back(x);
	
	caut(0);	
	
	
	
	minn=50000;
	for(i=1;i<k;i++)if(minn>val[final_list[i]]&&val[final_list[i]]!=0)minn=val[final_list[i]];
	
	cout<<minn;
return 0;	
}