AT_abc408_d [ABC408D] Flip to Gather

Description

長さ $ N $ の `0` と `1` のみからなる文字列 $ S $ が与えられます。 あなたは以下の操作を何回でも( $ 0 $ 回でもよい)行うことができます。 - $ 1 \leq i \leq N $ を満たす整数 $ i $ を選び、 $ S_i $ が `0` のときは `1` に、`1` のときは `0` に変更する。 あなたの目標は $ S $ に含まれる `1` が**高々 $ 1 $ 個**の区間をなすようにすることです。目標を達成するために必要な操作回数の最小値を求めてください。 より厳密には以下の条件をともに満たすような整数の組 $ (l,r) $ が存在するような $ S $ にすることが目標です。目標を達成するために必要な操作回数の最小値を求めてください。 - $ 1 \leq l \leq r \leq N+1 $ - $ 1 \leq i \leq N $ を満たす整数 $ i $ に対し、 $ S_i= $ `1` と $ l \leq i < r $ は同値である。 なお、有限回の操作で必ず目標が達成できることが証明できます。 $ T $ 個のテストケースが与えられるので、それぞれについて答えを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ T $ $ \textrm{case}_1 $ $ \textrm{case}_2 $ $ \vdots $ $ \textrm{case}_T $ $ \textrm{case}_i $ は $ i $ 番目のテストケースを表し、以下の形式で与えられる。 > $ N $ $ S $

Output Format

$ T $ 行出力せよ。 $ i $ 行目 $ (1 \leq i \leq T) $ には $ i $ 番目のテストケースに対する答えを出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 番目のテストケースにおいて、 $ S_1 $ を `0` に変更する操作を行なうと、`1` が $ 1 $ 個の区間をなすようになります。また、 $ S $ のままでは条件を満たしていません。したがって、答えは $ 1 $ です。 $ 2 $ 番目のテストケースにおいて、 $ S $ に `0` が $ 1 $ 個もないので、操作を行う必要はありません。したがって答えは $ 0 $ です。 $ 3 $ 番目のテストケースにおいて、 $ S $ に `1` が $ 1 $ 個もないので、操作を行う必要はありません。したがって答えは $ 0 $ です。 ### Constraints - $ 1 \leq T \leq 20000 $ - $ 1 \leq N \leq 2 \times 10^5 $ - $ S $ は `0` と `1` のみからなる長さ $ N $ の文字列 - 各入力ファイルについて、すべてのテストケースの $ N $ の総和は $ 2 \times 10^5 $ 以下である。 - $ T,N $ は整数