好串
题号:NC298609
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

Bingbong 定义一个字符串为好串当且仅当该字符串为 "10" 或者 "01"。

现在有一个长度为 n 的 01 字符串 s,他每次操作会执行如下:

选择一个索引 i(0\leqq i<n),若 s_i=\text{‘0’} ,则将其修改为 \text{‘1’},否则修改为 \text{‘0’}

现在他想要知道至少需要多少次修改才能使得字符串 s 中至少包含三个子串为好串。

输入描述:

本题输入包含多组数据。
第一行一个整数 T(1\leqq T\leqq 10^4),表示测试数据组数,对于每组数据格式如下:
    第一行一个整数 n(4\leqq n\leqq 10^6),表示字符串的长度。
    第二行一个长度为 n 的字符串 s,保证输入仅含 01
对于单个测试文件保证所有测试数据组的 n 之和小于等于 10^6

输出描述:

输出共 T行,每行一个整数,表示至少需要多少次修改才能使得字符串 s 中至少包含三个子串为好串。
示例1

输入

复制
2
4
1100
4
0101

输出

复制
2
0