#include <bits/stdc++.h>
using namespace std;
#define M 1000000007
#define mp make_pair
#define pb push_back
#define tri pair<int, pair<int, int> >
#define TRI(a,b,c) (make_pair(a,make_pair(b,c)))
typedef long long ll;
typedef long double ld;
int arr[100001], visited[100001], dp[100001];
vector<int> adj[100001], tvec;
void tsort(int i, int par)
{
visited[i]=1;
for(int j=0; j<adj[i].size(); j++)
{
if(visited[adj[i][j]]==0)
{
tsort(adj[i][j], i);
}
else if(visited[adj[i][j]]==1)
{
cout<<-1;
exit(0);
}
}
visited[i]=2;
tvec.pb(i);
}
int dfs(int i, int col)
{
dp[i]=(arr[i]==col);
int mx=0;
for(int j=0; j<adj[i].size(); j++)
{
mx=max(mx,dp[adj[i][j]]);
}
dp[i]+=mx;
return dp[i];
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m;
cin>>n>>m;
for(int i=0; i<n; i++)
{
cin>>arr[i];
visited[i]=0;
}
for(int i=0; i<m; i++)
{
int x, y;
cin>>x>>y;
if(x==y)
{
cout<<-1;
return 0;
}
adj[x-1].pb(y-1);
}
for(int i=0; i<n; i++)
{
if(visited[i]==0)
{
tsort(i, -1);
}
}
int mx=1;
for(int i=1; i<=100; i++)
{
for(int j=0; j<n; j++)
{
int ret = dfs(tvec[j], i);
mx = max(mx, ret);
}
}
cout<<mx;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKI2RlZmluZSBNIDEwMDAwMDAwMDcKIAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHRyaSBwYWlyPGludCwgcGFpcjxpbnQsIGludD4gPgojZGVmaW5lIFRSSShhLGIsYykgKG1ha2VfcGFpcihhLG1ha2VfcGFpcihiLGMpKSkKIAp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKIAppbnQgYXJyWzEwMDAwMV0sIHZpc2l0ZWRbMTAwMDAxXSwgZHBbMTAwMDAxXTsKIAp2ZWN0b3I8aW50PiBhZGpbMTAwMDAxXSwgdHZlYzsKIAp2b2lkIHRzb3J0KGludCBpLCBpbnQgcGFyKQp7Cgl2aXNpdGVkW2ldPTE7Cglmb3IoaW50IGo9MDsgajxhZGpbaV0uc2l6ZSgpOyBqKyspCgl7CgkJaWYodmlzaXRlZFthZGpbaV1bal1dPT0wKQoJCXsKCQkJdHNvcnQoYWRqW2ldW2pdLCBpKTsKCQl9CgkJZWxzZSBpZih2aXNpdGVkW2FkaltpXVtqXV09PTEpCgkJewoJCQljb3V0PDwtMTsKCQkJZXhpdCgwKTsKCQl9Cgl9Cgl2aXNpdGVkW2ldPTI7Cgl0dmVjLnBiKGkpOwp9CiAKaW50IGRmcyhpbnQgaSwgaW50IGNvbCkKewoJZHBbaV09KGFycltpXT09Y29sKTsKCWludCBteD0wOwoJZm9yKGludCBqPTA7IGo8YWRqW2ldLnNpemUoKTsgaisrKQoJewoJCW14PW1heChteCxkcFthZGpbaV1bal1dKTsKCX0KCWRwW2ldKz1teDsKCXJldHVybiBkcFtpXTsKfQogCmludCBtYWluKCkgCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIGNvdXQudGllKE5VTEwpOwogICAgaW50IG4sIG07CiAgICBjaW4+Pm4+Pm07CiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspCiAgICB7CiAgICAJY2luPj5hcnJbaV07CiAgICAJdmlzaXRlZFtpXT0wOwogICAgfQogICAgZm9yKGludCBpPTA7IGk8bTsgaSsrKQogICAgewogICAgCWludCB4LCB5OwogICAgCWNpbj4+eD4+eTsKICAgIAlpZih4PT15KQogICAgCXsKICAgIAkJY291dDw8LTE7CiAgICAJCXJldHVybiAwOwogICAgCX0KICAgIAlhZGpbeC0xXS5wYih5LTEpOwogICAgfQogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgewogICAgCWlmKHZpc2l0ZWRbaV09PTApCiAgICAJewogICAgCQl0c29ydChpLCAtMSk7CiAgICAJfQogICAgfQogICAgaW50IG14PTE7CiAgICBmb3IoaW50IGk9MTsgaTw9MTAwOyBpKyspCiAgICB7CiAgICAJZm9yKGludCBqPTA7IGo8bjsgaisrKQogICAgCXsKCSAgICAJaW50IHJldCA9IGRmcyh0dmVjW2pdLCBpKTsKCSAgICAJbXggPSBtYXgobXgsIHJldCk7CiAgICAJfQogICAgfQogICAgY291dDw8bXg7CiAgICByZXR1cm4gMDsKfSA=