/*
TASK:move
LANG:C++
*/
#include<iostream>
using namespace std;
int s[12][12],n,mi=32766,b,v[12];
void dfs(int t,int p)
{
 int i,j,c;
// s[t][p]=0;
 s[p][t]=0;
 b++;
 for(i=1;i<=n;i++)
 {
  if(s[t][i]&&i!=p)
  {
   c=v[t];v[t]=v[i];v[i]=c;
   dfs(i,t);
   s[i][t]=1;
   for(j=1;j<=n;j++)
   {
    if(v[j]!=j)break;
   }
   if(j==n+1&&b<mi)mi=b;
   c=v[t];v[t]=v[i];v[i]=c;
   b--;
  }
 }
 
}
int main()
{
 int m,i,x,y,t,p=0;
 cin>>n>>m;
 for(i=0;i<m;i++)
 {
  cin>>x>>y;
  s[x][y]=s[y][x]=1;
 }
 for(i=1;i<=n;i++)
 {
  cin>>v[i];
  if(v[i]==1)t=i;
 }
 dfs(t,p);
 if(mi==32766){cout<<"-1"<<endl;return 0;}
 cout<<mi-1<<endl;
 return 0;
}
