좋은 문자열 만들기

아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

0011로 이루어진 길이 nn의 이진 문자열 a_1a_2...a_na\_1a\_2...a\_n이 주어진다. 여러분은 비용 11로 하나의 문자를 다른 문자로 바꿀 수 있다.

좋은 이진 문자열은 다음을 만족하는 문자열이다.

  • 0011을 적어도 하나씩 포함한다.
  • 00을 포함하는 구간의 최소 길이는 11을 포함하는 구간의 최소 길이와 같다. 구간 [ss, ee]가 jj를 포함한다는 것은 a_i=ja\_i=j인 모든 ii에 대해 sies \leq i \leq e가 성립한다는 것이다. (1in1 \leq i \leq n, j=0j=0, 11) 구간 [ss, ee]의 길이는 ese-s로 정의한다.

주어진 문자열을 좋은 이진 문자열로 만드는 데 필요한 최소 비용을 구하시오.

입력

첫째 줄에는 테스트케이스의 개수 TT가 주어진다. (1T1031 \leq T \leq 10^3)

각 테스트케이스는 다음과 같은 구성을 가진다.

첫째 줄에는 이진 문자열의 길이 nn이 주어진다. (1n1061 \leq n \leq 10^6)

다음 줄에는 0011로 이루어진 길이 nn의 문자열이 주어진다.

모든 테스트케이스에 대해서 nn의 합이 10610^6 이하임이 보장된다.

출력

각 테스트 케이스에 대해서 주어진 문자열을 좋은 이진 문자열로 만들 수 없다면 1-1을 출력한다. 좋은 이진 문자열로 만들 수 있다면 좋은 이진 문자열로 만들기 위한 최소 비용을 출력한다.