0과 1

길이가 같은 두 이진 문자열에서 한 문자열의 인접한 두 문자를 뒤집어 두 문자열을 같게 만드는 최소 연산 횟수를 구하고, 불가능하면 -1을 출력한다.

보통6수학문자열그리디구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

피터는 오늘 컴퓨터 과학 수업에 숙제를 내지 않아서 벌로 추가 과제를 받았다. 선생님은 길이가 같은 두 문자열을 칠판에 적고, 한 종류의 연산만 써서 두 문자열을 같게 만들라고 했다. 연산은 두 문자열 중 하나를 고른 다음, 그 문자열에서 인접한 두 글자를 뒤집는 것이다. 뒤집기는 0을 1로, 1을 0으로 바꾼다.

과제를 더 어렵게 만들려고, 선생님은 연산 횟수를 최소로 하라는 조건을 붙였다.

예를 들어 두 문자열이 0101과 1111이면 첫 번째 문자열의 가운데 두 글자를 뒤집어 0011과 1111을 만들고, 이어서 두 번째 문자열의 앞 두 글자를 뒤집어 0011과 0011을 만들 수 있다. 같은 횟수로 두 문자열을 같게 만드는 다른 방법도 있다.

피터의 과제를 대신 풀어라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 개수 tt (1t1001 \le t \le 100)가 주어진다.

각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 선생님이 적은 문자열의 길이 nn (1n1051 \le n \le 10^5)이 주어진다. 둘째 줄과 셋째 줄에 문자열이 하나씩 주어진다. 두 문자열의 길이는 모두 nn이고, 0과 1로만 이루어져 있다.

한 입력에 들어 있는 모든 테스트 케이스의 nn의 합은 10510^5을 넘지 않는다.

출력

각 테스트 케이스마다 두 문자열을 같게 만드는 데 필요한 최소 연산 횟수를 한 줄에 출력한다. 두 문자열을 같게 만들 수 없으면 -1을 출력한다.