#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
  int n,m;
  cin>>n>>m;
  
vector<int>a(n);
  for(int i = 0 ; i< n  ;i++){
  	cin>>a[i];
  }
  
  vector<vector<int>>adj(n);
  for(int i = 0 ; i<m ;i++){
  	int u,v;
  	cin>>u>>v;
  	
  	adj[u].push_back(v);
  	adj[v].push_back(u);
  }
  
  vector<int>lvl(n,1e9);
  vector<int>used(n,0);
  queue<int>q;
  if(a[0]==1){
  	q.push(0);
  	used[0]=1;
  	lvl[0]=0;
  }
  
  while(!q.empty()){
  	auto u = q.front();
  	q.pop();
  	
  	for(auto v: adj[u]){
  	if(a[v]==1 && used[v]==0){
  		used[v]=1;
  		q.push(v);
  		lvl[v]=lvl[u]+1;
  	}
  		
  	}
  }

  if(lvl[n-1]==1e9){
  	cout<<-1;
  }else{
  	cout<<lvl[n-1];
  }
}