/*
TASK:Trip
LANG:C++
*/
#include <iostream>
#include <vector>
#include <stdio.h>
//#include <conio.h>
#include <queue>
using namespace std;
int N,M,K;
vector < vector <int> > m;
bool u[1001];
int d[1001];
int td[1001];
queue <int> q;
bool v[1001];
bool ma[1001][1001];

int main()
{
//clrscr();
//freopen("test1.txt","r",stdin);
scanf("%d %d %d",&N,&M,&K);
              //cout<<N<<M<<K<<endl;

          int i,j;
          for(i=0;i<=N;i++)
             {
             vector <int> temp;
                    m.push_back(temp);
             }
             int a,b;
          for(i=1;i<=M;i++)
            {
                //cin>>a>>b;
                scanf("%d %d",&a,&b);
                if(!ma[a][b])
                {
                m[a].push_back(b);
                m[b].push_back(a);
                ma[a][b]=1;
                ma[b][a]=1;
                //cout<<a<<b<<endl;
                }
            }
        for(i=1;i<=K;i++)
                         {
                         scanf("%d",&a);
                         v[a]=1;
                         //cout<<a<<endl;
                         }
        for(i=1;i<=N;i++)
                         d[i]=0;
       for(j=1;j<=N;j++)
         {
         //q.clear();
         for(i=1;i<=N;i++)
          {
          td[i]=0;
          u[i]=0;
          }


         int vr=j;

         q.push(vr);
         //if(v[vr])
         //td[vr]=1;
           //       else td[vr]=0;
         while(!q.empty())
         {
         vr=q.front();
         u[vr]=1;
         if(!v[vr])
         td[vr]++;
         /*for(i=1;i<=N;i++)
                          cout<<td[i]<<" ";
                          cout<<endl;*/
             if(td[vr]>d[vr])
                             d[vr]=td[vr];

                for(i=0;i<m[vr].size();i++)
                   {


                   //if(v[m[vr][i]])
                   //td[m[vr][i]]++;

                        if(!u[m[vr][i]])
                        {
                           if(td[vr]>td[m[vr][i]])
                                         td[m[vr][i]]=td[vr];
                         u[m[vr][i]]=1;
                         q.push(m[vr][i]);
                        }
                   }
         q.pop();
         }
                        
        /* for(i=1;i<=N;i++)
                         cout<<td[i]<<" ";
                          cout<<endl;*/

         }
    int maxi=0;

    for(i=1;i<=N;i++)
                   maxi=max(maxi,d[i]);
         
  printf("%d\n",maxi);
return 0;
}
