P5971 [CTSC2009] 移盘子
题目描述
已知有三根柱子,分别记为 $A$, $B$ 和 $C$。初始状态时 $A$ 上放有 $N$ 个盘子,而 $B$ 和 $C$ 两个柱子上没有放任何盘子。你每次能做的移动操作就是把某根柱子最上面的一个盘子拿下来,然后放到另一个柱子上。盘子有三类,分别用 $1$, $2$, $3$ 来表示。你的目标是,让所有 $1$ 类盘子最终放在 $A$ 上,让所有 $2$ 类盘子最终放在 $B$ 上,所有 $3$ 类盘子最终放在 $C$ 上。现在让你求出实现上述目标总共最少需要多少次移动?
输入格式
输入文件 trique.in 第一行包含一个整数 $N$,为盘子的总数。
第二行有 $N$ 个数,每个数只能是 $1$, $2$, $3$ 之一。这 $N$ 个数表示在初始状态时第一个柱子上所有盘子的类型,按照从上往下的顺序。
输出格式
输出文件 trique.out 只包含一个数,即最少的移动次数。
说明/提示
### 样例说明
初始状态如下图:


### 数据范围
对于 $20$%的数据, 盘子的种类不超过 $2$ 种;
对于 $40$%的数据, $N \leq 300$;
对于 $100$%的数据, $N \leq 1000$。