#include<bits/stdc++.h>
using namespace std;
int a[300007],b[500007],c[500007];
set<int>st[300007];
vector<int>v;
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
v.push_back(a[i]);
}
int cnt=0;
for(int i=1;i<=m;i++){
scanf("%d%d",&b[i],&c[i]);
st[b[i]].insert(c[i]);
}
v.pop_back();
int ans=0;
for(int i=(int)v.size()-1;i>=0;i--){//从后向前是为了保证只要i>=0就可以循环下去,不会使循环跑不完就停止
int tmp=v[i];
for(int j=i+1;j<v.size();j++){//从前向后换,可以让a[n]先和原先靠前的换后再和原先靠后的换,从而换的更远
if(st[tmp].count(v[j])){
swap(v[j],v[j-1]);
}
else
break;
}
if(st[v.back()].count(a[n]))//队尾可以换到a[n]后面的话,彻底删除他
v.pop_back();
}
ans=n-v.size()-1;
printf("%d",ans);
return 0;
}