//
// Created by xingchaoyue on 2022/10/21.
//
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
int n,c;
int v[2000];
int fa[2000];
int finds(int i){
int temp = i;
while(fa[i]!= 0){
i = fa[i];
}
while(temp!=i){
int tt = temp;
temp = fa[temp];
fa[tt] = i;
}
return i;
}
void join(int i, int j){
int ii = finds(i);
int jj = finds(j);
if(ii!=jj){
fa[ii] = jj;
finds(i);
}
}
int vis[2000];
map<int,int>mp;
int main(){
cin>>n>>c;
for(int i = 1;i<=n;++i){
cin>>v[i];
}
for(int i = 0;i<c;++i){
int l,r;
cin>>l>>r;
join(l,r);
}
int all = 0;
for(int i = 1;i<=n;++i){
int f = finds(i);
int maxs = 0;
int fall = 0;
cout<<finds(i)<<endl;
if(!vis[f]){
vis[f] = 1;
mp.clear();
for(int j = 0;j<n;++j){
if(finds(j)==f){
fall++;
mp[v[j]]++;
maxs = max(mp[v[j]],maxs);
}
}
}
all+=(fall-maxs);
}
cout<<all<<endl;
}