/*
TASK:TRIP
LANG:C
*/
#include<stdio.h>
#define max 1001



int main()
{
 int n,m,x,y,a[max][max],b[max]={0},i,j,k,mx,temp;

 scanf("%d%d%d",&n,&m,&k);
 for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)a[i][j]=-1;

 for(i=1;i<=m;i++)
    {
     scanf("%d%d",&x,&y);
     a[x][y]=2;a[y][x]=2;
    }
 for(i=1;i<=k;i++){scanf("%d",&x);b[x]=1;}

 for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
       if(a[i][j]!=-1)
	 {
	  if(b[i]&&!b[j])a[i][j]=1;
	  else if(!b[i]&&b[j])a[i][j]=1;
	  else if(b[i]&&b[j])a[i][j]=0;
	 }
 for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      {
       if(a[i][j]!=-1)
	 {
	  mx=a[i][j];temp=a[i][j];
	  for(k=1;k<j;k++)
	    {
	     if(a[i][k]!=-1&&a[k][j]!=-1)
	       {
	       if((a[i][k]+a[k][j])>mx)
		 {
		   if((!b[j]&&!b[k])&&(a[i][k]==a[k][j]))temp=a[i][k]+1;
		   else if(a[i][k]>a[k][j])temp=a[i][k];
		   else temp=a[k][j];
		 }
	       }
	    }
	 }
	 a[i][j]=temp;
       }
  mx=-1;
  for(i=1;i<=n;i++)
     for(j=1;j<=n;j++)if(a[i][j]>mx)mx=a[i][j];

  printf("%d\n",mx);

 return 0;
}
