/*
TASK:trip
LANG:C++ 
*/
#include<iostream>
using namespace std;
int a[1005][1005],n,post[1000],d[1005][1005],lng[1005],k;
void floyd()
{
	int f,i,j;
	for(f=0;f<n;f++)
	{
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)if(i!=j&&j!=f&&i!=f&&a[i][j]>(a[i][f]+a[f][j]))a[i][j]=a[i][f]+a[f][j];
		}
	}
}
void anul()
{
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)a[i][j]=10000;
	}
	for(i=0;i<n;i++)lng[i]=0;
}
int visited(int t)
{
	int i;
	for(i=0;i<k;i++)
	{
		if(post[i]==t)return 1;
	}
	return 0;
}
int main()
{
	int i,j,m,p,q;
	cin>>n>>m>>k;
	anul();
	for(i=0;i<m;i++)
	{
		cin>>p>>q;
		p--;
		q--;
		a[p][q]=1;
		a[q][p]=1;
	}
	for(i=0;i<k;i++)cin>>post[i];
	floyd();
	int btor=0;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(a[i][j]>btor&&a[i][j]!=10000)btor=a[i][j];
		}
	}
	cout<<btor<<"\n";
	return 0;
}
