#include<bits/stdc++.h>
using namespace std;
int getMinSwaps(vector<int> v)
{
vector<int> v1(v); //将A内元素复制到B。
sort(v1.begin(), v1.end());
map<int,int> m;
int len = v.size();
for (int i = 0; i < len; i++)
{
m[v1[i]] = i; // 建立每个元素与其应放位置的映射关系
}
int loops = 0; // 循环节个数
vector<bool> flag(len, false); //初始化
//找出循环节的个数
for (int i = 0; i < len; i++)
{
if (!flag[i])
{
int j = i;
while (!flag[j]) //对环处理
{
flag[j] = true;
j = m[v[j]]; //原序列中j位置的元素在有序序列中的位置
}
loops++;
}
}
return len - loops;
}
vector<int> v;
int main()
{
int n,k;
cin>>n;
while(n--){
cin>>k;
v.push_back(k);
}
int num = getMinSwaps(v);
cout<<num<<endl;
return 0;
}