/*
TASK:move
LANG:C++
*/

#include<iostream.h>
 int A[16][16],p[16],n;

 long full(int p1, int l);

 char ckeck(){
  int i=1;
  while(i<=n && p[i]==i)i++;
  if(i==n+1)return 1;
   else return 0;
 }

 int main()
 {
  int m,i,a,b,u;
  char t=0;
  cin>>n>>m;
  for(i=0;i<m;i++)
   {cin>>a>>b; A[b][a]=A[a][b]=1;}
  for(i=1;i<=n;i++){cin>>p[i]; if(p[i]!=i+1)t=1; if(p[i]==1)u=i;}
  if((u=full(u,0)))cout<<u<<endl;
    else cout<<"-1"<<endl;
  return 0;
 }

 long full(int p1, int l)
 {
  if(p1==1)if(ckeck())return l;
  if(l>20)return 0;
  int i,s;
  for(i=1;i<=n;i++)
   if(A[p1][i]){
    s=p[p1]; p[p1]=p[i]; p[i]=s;
    if(s=full(i,l+1))return s;
    s=p[p1]; p[p1]=p[i]; p[i]=s;
   }
  return 0;
 }