#include<bits/stdc++.h>
using namespace std;
#define int long long
void scc_dfs(const auto&g,auto&v,auto&s,int i){
if(v[i]){
return;
}
v[i]=1;
for(int j:g[i]){
scc_dfs(g,v,s,j);
}
s.push_back(i);
}
int scc(const auto&g,const auto&gg,auto&c){
int n=g.size();
vector<int>v,s;
v.assign(n,0);
for(int i=0;i<n;i++){
scc_dfs(g,v,s,i);
}
v.assign(n,0);
for(int i=n-1;i>=0;i--){
if(v[s[i]]){
continue;
}
c.emplace_back();
scc_dfs(gg,v,c.back(),s[i]);
}
return c.size();
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N,K;
cin>>N>>K;
vector<int>v(N);
for(int i=0;i<N;i++){
cin>>v[i];
}
int M;
cin>>M;
vector<vector<int>>g(K+1),gg(K+1);
for(int i=0;i<M;i++){
int a,b;
cin>>a>>b;
g[a].push_back(b);
gg[b].push_back(a);
}
vector<vector<int>>c;
int O=scc(g,gg,c);
vector<int>cc(K+1);
for(int i=0;i<O;i++){
for(int j:c[i]){
cc[j]=i;
}
}
vector<vector<int>>h(O);
for(int i=0;i<O;i++){
for(int j:c[i]){
for(int k:g[j]){
int l=cc[k];
if(l!=i){
h[i].push_back(l);
}
}
}
}
for(int i=0;i<O;i++){
h[i].erase(unique(h[i].begin(),h[i].end()),h[i].end());
}
vector<int>w(O);
vector<bitset<250001>>s(O);
auto dfs=[&](auto self,int i)->void{
if(w[i]){
return;
}
w[i]=1;
s[i][i]=1;
for(int j:h[i]){
self(self,j);
s[i]|=s[j];
}
};
for(int i=0;i<O;i++){
dfs(dfs,i);
}
for(int i=1;i<=K;i++){
sort(g[i].begin(),g[i].end());
}
int ans=2;
for(int i=0;i+1<N;i++){
if(binary_search(g[v[i]].begin(),g[v[i]].end(),v[i+1])){
ans+=2;
continue;
}
if(!s[cc[v[i]]][cc[v[i+1]]]){
break;
}
ans+=1;
}
cout<<ans<<'\n';
return 0;
}