#include<bits/stdc++.h>
using namespace std;
const int nmax=100005;
int par[nmax];
void init(int x){
  for(int i=0;i<x;i++){
    par[i]=i;
  }
}
int root(int x){
  if(par[x]==x){
    return x;
  }
  else{
    return par[x]=root(par[x]);
  }
}
void unite(int x,int y){
  x=root(x);
  y=root(y);
  if(x==y){
    return;
  }
  else{
    par[x]=y;
  }
}
int main(){
  int n,m;
  cin >> n >> m;
  init(n);
  vector<int> p(n);
  for(int i=0;i<n;i++){
    cin >> p[i];
    p[i]--;
  }
  for(int i=0;i<m;i++){
    int x,y;
    cin >> x >> y;
    x--,y--;
    unite(x,y);
  }
  int cnt=0;
  for(int i=0;i<n;i++){
    if(root(i)==root(p[i])){
      cnt++;
    }
  }
  cout << cnt << endl;
}