#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 10;
int arr[maxn], l, r, id[maxn];
int n, m, ans;
vector<int> v[maxn];
void dfs(int x) {
  int res = 0;
  for (int i = id[x] + 1; i < n - ans - 1; i++) {
    if (v[x][upper_bound(v[x].begin(), v[x].end(), arr[i]) - v[x].begin() -
             1] == arr[i]) {
      res++;
    }
  }
  if (res == n - ans - 2 - id[x]) {
    ans++;
  }
}
int main() {
  while (cin >> n >> m) {
    ans = 0;
    for (int i = 0; i < n; i++) {
      cin >> arr[i];
      id[arr[i]] = i;
    }
    for (int i = 0; i < m; i++) {
      cin >> l >> r;
      if (v[l].empty()) {
        v[l].push_back(r);
      } else {
        int tmp = lower_bound(v[l].begin(), v[l].end(), r) - v[l].begin();
        if (v[l][tmp] != r) {
          v[l].insert(lower_bound(v[l].begin(), v[l].end(), r), r);
        }
      }
      if (v[r].empty()) {
        v[r].push_back(l);
      } else {
        int tmp = lower_bound(v[r].begin(), v[r].end(), l) - v[r].begin();
        if (v[r][tmp] != l) {
          v[r].insert(lower_bound(v[r].begin(), v[r].end(), l), l);
        }
      }
    }
    for (int i = 0; i < v[arr[n - 1]].size(); i++) {
      dfs(v[arr[n - 1]][i]);
    }
    cout << ans << endl;
  }
}
