#codefestival2015finalc. [codefestival_2015_final_c]寿司タワー

[codefestival_2015_final_c]寿司タワー

问题描述

寿司是一种将"酒"放在"物料"上面的食物。

Ringo想通过堆叠N个寿司来制作一个寿司塔。有N个寿司,意味着有N个酒和N个物料,总共有2N个部件,她希望按照某种顺序堆叠这些部件。

有以下三种方法来堆叠寿司:

  • 直接堆叠:按照酒和物料的顺序堆叠。
  • 翻转堆叠:按照物料和酒的顺序堆叠。
  • 分解堆叠:将寿司分解成酒和物料,并将它们分别堆叠。

例如,如果要按照从下到上的顺序依次堆叠3个寿司为"物料、酒、物料、物料、酒、酒",可以按照以下方式进行堆叠:

  1. 分解一个寿司,堆叠物料。保留酒以便后续堆叠。
  2. 直接堆叠一个寿司。
  3. 翻转堆叠一个寿司。
  4. 堆叠保留的酒。

由于分解寿司是很麻烦的,Ringo希望尽可能减少分解的寿司数量。请计算为了制作目标的寿司塔所需的分解寿司的最小数量。


输入

输入以以下格式从标准输入中给出:

NN

SS

  • 第1行包含一个整数N(1N256)N(1 \leq N \leq 256),表示寿司的数量。
  • 第2行包含由长度为2N2N的字符串SS表示的部件堆叠顺序。SS由N个0和N个1组成的字符串,第i(1i2N)i (1 \leq i \leq 2N)个字符表示按照从下到上的顺序将酒堆叠在第i个位置是0还是将物料堆叠在第i个位置是1

输出

输出一个整数,在一行中表示为了制作目标的寿司塔所需的最小分解寿司数量。在输出末尾要包含一个换行符。


输入示例1

3
101100

输出示例1

1

与问题描述中的例子相同。下图表示了堆叠方式的示例,白色圆表示酒,红色矩形表示物料。

figure1


输入示例2

5
0000111011

输出示例2

3

以上是问题的描述和示例。