编程题
### 问题描述
在一个虚拟的游戏世界中,玩家需要通过解决一系列谜题来探索迷失的神秘岛屿。每个谜题都与一个特殊的石碑相关,而这些石碑上刻着一个由整数组成的序列。$YJ$ 是一位勇敢的冒险者,他发现了最后一个石碑。据传说,只有通过对这个序列进行一些特定操作,他才能获得关键的线索,找到宝藏所在的位置。石碑上的序列 $A$ 是 $YJ$ 面临的最后一个谜题。他意识到,他可以通过交换序列中的元素来使其变得非递减,从而解开谜题并揭示宝藏的下一个目的地。现在, $YJ$ 需要你的帮助来确定他需要执行的最少操作次数,以使序列 $A$ 变得非递减。每一次操作,他可以选择两个位置上的元素进行交换。你的任务是计算出最小的操作次数,帮助 $YJ$ 成功解开这个谜题,找到宝藏的下一个线索。
### 输入描述
第一行输入 $n$ ,表示序列的长度。
第二行输入 $n$ 个数字,第 $i$ 个数字表示序列 $A$ 的第 $i$ 个元素 $A[i]$ 。
输入保证 $1 \leq n \leq 10^6,1 \leq A[i] \leq 4$ 。
### 输出描述
输出一个数字表示最小交换次数。
### 样例输入
```
5
1 3 5 4 2
```
### 样例输出
```
2
```
### 说明
$2$ 和 $3$ 交换, $3$ 和 $5$ 交换,得到序列 $1,2,3,4,5$ 。