小红的华撃串
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红定义一个仅由字符 \texttt{`0'}\texttt{`1'} 组成的字符串(简称 01 串)为华撃串,当且仅当其恰好包含三个 \texttt{\texttt{ 子串。换句话说,一个 01 串为华撃串,当且仅当 \operatorname{count}(\texttt{ 等于 3。其中,\operatorname{count}(\texttt{ 表示字符串中 \texttt{ 子串的数量,\operatorname{count}(\texttt{ 表示字符串中 \texttt{ 子串的数量。

\hspace{15pt}现在,小红拿到了一个长为 n 的 01 串,他想要将其变为一个华撃串。为此,他可以进行以下操作:
\hspace{23pt}\bullet\,选择任意一个位置,将其反置(若该位置的字符为 \texttt{`1'},反置后为 \texttt{`0'};若该位置的字符为 \texttt{`0'},反置后为 \texttt{`1'})。

\hspace{15pt}我们可以证明,当字符串长度大于等于 4 时,一定可以通过若干次这样的操作,将原串变为华撃串。小红想知道最少的操作次数是多少。

输入描述:

\hspace{15pt}第一行输入一个整数 n\left(4 \leqq n \leqq 500\right),表示字符串的长度。
\hspace{15pt}第二行输入一个长度为 n 的 01 串 s

输出描述:

\hspace{15pt}输出一个整数,表示最少翻转次数。
示例1

输入

复制
4
1010

输出

复制
0

说明

\hspace{15pt}在这个样例中,原 01 串已经是华撃串,不需要操作。
示例2

输入

复制
5
11111

输出

复制
2