//并查集把颜色要相同的下标放在同一集合中,贪心:找到每个集合中出现最多的颜色 把该集合中剩下的颜色变为该颜色
#include <bits/stdc++.h>
using namespace std;
const int AX = 2e5+666;
int a[AX], pre[AX];
vector<int>p[AX];
int gather[AX];
long long sum = 0;
int find(int x)
{
if (x == pre[x])
return x;
else return pre[x] = find(pre[x]);
}
void mix(int x,int y){
int xx = find(x);
int yy = find(y);
if(xx!=yy){
pre[yy] = xx;
}
}
int main()
{
int n,m,k;
cin>>n>>m>>k;
for(int i = 1;i <= n;i++){
cin>>a[i];
pre[i] = i;
}
int x,y;
for (int i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
mix(x,y);
}
int num = 0;
for(int i=1;i<=n;i++){
if(pre[i]==i){
gather[i]= ++num;
}
}
for(int i=1;i<=n;i++){
p[gather[find(i)]].push_back(a[i]);
}
for(int i=1;i<=num;i++){
int size1 = p[i].size();
int mx = 0;
map<int,int>mp;
for(int j=0;j<size1;j++){
mp[p[i][j]]++;
mx = max(mx,mp[p[i][j]]);
}
sum += (size1-mx);
}
cout<<sum<<endl;
return 0;
}