/*
TASK:trip
LANG:C++
*/
#include<iostream>

#define MN 1003

using namespace std;
int n,m,k,br;
int a[MN][MN],v[MN],p[MN];

void vhod()
{int i,x,y;
 cin>>n>>m>>k;
 for(i=1;i<=m;i++)
  {cin>>x>>y;
   a[x][0]++;
   a[y][0]++;
   a[y][a[y][0]]=x;
   a[x][a[x][0]]=y;
  }
 for(i=1;i<=k;i++)
   {cin>>x;
    p[x]=1;
   }
}

void BFS(int x)
{int f=-1,l=0,q[MN],i;
 q[++f]=x;
 if(!p[x])v[x]=1;
 v[x]++;
 while(f>=l)
  {x=q[l++];
   for(i=1;i<=a[x][0];i++)
     {if(!v[a[x][i]])
       {q[++f]=a[x][i];
        if(!p[a[x][i]])v[a[x][i]]=v[x]+1;
          else v[a[x][i]]=v[x];
       }
     }
  }
}

void solve()
{int i,j;
 for(i=1;i<=n;i++)
   {BFS(i);
    for(j=1;j<=n;j++)
      {if(v[j]>br)br=v[j];
       v[j]=0;
      }
   }
 cout<<br-1<<endl;
}

int main()
{vhod();
 solve();
 return 0;
}

