编程题
### 问题描述
小然最近在练习一种二进制魔术,他有一个由 0 和 1 组成的二进制字符串 $S$。
他可以进行以下操作:
- 选择一个子串 $S_{L...R} (1 \leq L \leq R \leq |S|)$,这个子串中的元素是非递减排列的,然后移除这个子串。移除后,字符串的左右两部分会自动连接在一起。
例如,如果 $S = 100011000$,我们可以执行以下操作:$100011000 \rightarrow 100000$,即移除字串 $011$。
小然的目标是通过最少的操作次数,使得最后的二进制字符串 $S$ 是非递减的。
现在,他需要你的帮助,来确定最少的操作次数。
### 输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。
每个测试用例由两行组成:
- 第一行包含一个整数 $N$,表示二进制字符串的长度。
- 第二行包含一个长度为 $N$ 的二进制字符串,由 0 和 1 组成。
### 输出格式
对于每个测试用例,输出一行一个整数,表示使最后的二进制字符串非递减所需的最少操作次数。
### 样例输入
```text
3
3
000
5
01110
2
10
```
### 样例输出
```text
0
1
1
```
### 说明
在第一个测试用例中,二进制字符串已经是非递减的,所以不需要进行操作。
在第二个测试用例中,我们可以进行一次操作,移除子串 $111$。这样,剩下的字符串 $00$ 是非递减的。
在第三个测试用例中,我们可以进行一次操作,移除子串 $0$。这样,剩下的字符串 $1$ 是非递减的。
### 评测数据范围
$1 \leq T \leq 10^3$。
$1 \leq N \leq 10^5$。
所有测试用例中 $N$ 的总和不超过 $2 \times 10^5$。