#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];
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwppbnQgbWFpbigpIHsKICBpbnQgbixtOwogIGNpbj4+bj4+bTsKICAKdmVjdG9yPGludD5hKG4pOwogIGZvcihpbnQgaSA9IDAgOyBpPCBuICA7aSsrKXsKICAJY2luPj5hW2ldOwogIH0KICAKICB2ZWN0b3I8dmVjdG9yPGludD4+YWRqKG4pOwogIGZvcihpbnQgaSA9IDAgOyBpPG0gO2krKyl7CiAgCWludCB1LHY7CiAgCWNpbj4+dT4+djsKICAJCiAgCWFkalt1XS5wdXNoX2JhY2sodik7CiAgCWFkalt2XS5wdXNoX2JhY2sodSk7CiAgfQogIAogIHZlY3RvcjxpbnQ+bHZsKG4sMWU5KTsKICB2ZWN0b3I8aW50PnVzZWQobiwwKTsKICBxdWV1ZTxpbnQ+cTsKICBpZihhWzBdPT0xKXsKICAJcS5wdXNoKDApOwogIAl1c2VkWzBdPTE7CiAgCWx2bFswXT0wOwogIH0KICAKICB3aGlsZSghcS5lbXB0eSgpKXsKICAJYXV0byB1ID0gcS5mcm9udCgpOwogIAlxLnBvcCgpOwogIAkKICAJZm9yKGF1dG8gdjogYWRqW3VdKXsKICAJaWYoYVt2XT09MSAmJiB1c2VkW3ZdPT0wKXsKICAJCXVzZWRbdl09MTsKICAJCXEucHVzaCh2KTsKICAJCWx2bFt2XT1sdmxbdV0rMTsKICAJfQogIAkJCiAgCX0KICB9CgogIGlmKGx2bFtuLTFdPT0xZTkpewogIAljb3V0PDwtMTsKICB9ZWxzZXsKICAJY291dDw8bHZsW24tMV07CiAgfQp9