#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
const int maxn = 500024;
const int mod = 1e9 + 7;
const double eps = 1e-8;
using namespace std;
int n, m;
int eend;
int p[300024];
int pos[300024];
queue<int> q;
std::set<int> s[maxn];
std::vector<pair<int, int> > vp;
int main() {
  scanf("%d", &n);
  eend = n;
  scanf("%d", &m);
  for (int i = 0; i <= n - 1; i++) {
    scanf("%d", &p[i]);
    pos[p[i]] = i;
  }
  int u1, v1;
  for (int i = 0; i <= m - 1; i++) {
    scanf("%d%d", &u1, &v1);
    s[u1].insert(v1);
    if (v1 == p[n - 1]) {
      vp.push_back(pair<int, int>(u1, pos[u1]));
    }
  }
  sort(vp.begin(), vp.end(), [](pair<int, int> a, pair<int, int> b) -> bool {
    return a.second > b.second;
  });
  int tot = 0;
  for (int i = 0; i < vp.size(); i++) {
    bool oK = true;
    for (int j = vp[i].second + 1; j < eend; j++) {
      if (s[vp[i].first].count(p[j]) == 0) {
        oK = false;
        break;
      }
    }
    if (oK) {
      tot++;
      eend--;
    }
  }
  printf("%d\n", tot);
  return 0;
}
