/*
TASK:trip
LANG:C++
*/
#include <iostream>
using namespace std;
bool f,w=false;
bool city[1001][1001]={{false,false,false},{false,false,false},{false,false,false}};
bool visited[1001]={false,false,false};
bool used[1001]={false,false,false};
int n,m,k;
int end;
int cnt=0;
int mn=320000;
int mx=0;
void dfs(int u)
{
  used[u]=true;
  cnt++;
  if(city[u][end])
  {
//     cnt++;
     f=true;
     return;
  }
  else
  for(int i=0; i<n; i++)
    if(city[u][i]&&city[i][end]&&!f)
    {
       used[i]=true;
       cnt++;
       if(!visited[i])
       f=true;
       else
       w=true;
    }
  for(int i=0; i<n; i++)
    if(!used[i]&&city[u][i]&&!f&&!w)
    {
      dfs(i);
    //  cnt--;
    }
  if(!f)
    cnt--;
}
int main()
{
  cin>>n>>m>>k;
  int c1,c2;
  f=false;
  for(int i=0; i<n; i++)
  {
    for(int y=0; y<n; y++)
      city[i][y]=false;
    visited[i]=false;
    used[i]=false;
  }
  for(int i=0; i<m;i++)
  {
    cin>>c1>>c2;
    city[c1-1][c2-1]=true;
    city[c2-1][c1-1]=true;
  }
  for(int i=0;i<k;i++)
  {
    cin>>c1;
    visited[c1]=true;
  }
  for(int i=0; i<n; i++)
  {
   // if(!visited[i])
      for(end=0; end<n; end++)
        if(end!=i)
        {
          dfs(i);
          int a=0;
          for(int y=0; y<n;y++)
          {
            if(used[y]&&!visited[y])
              a++;
            used[y]=false;
          }
          //cout<<a<<endl;
          if(mx<=a||cnt<=mn)
          {
            mx=a;
            mn=cnt;
          }
         
          
          f = false;
          w=false;
         cnt=0;
        }
  }
  cout<<mx;
  return 0;
}
