[Python_Training] Đổi bit

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
C#, C++, Clang, Clang++, Cobol, D, Groovy, Haskell, Java, JS, Kotlin, Lua, Node JS, ObjectiveC, OCaml, Output, PHP, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 450 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho hai xâu \(S\)\(T\) đều có độ dài là \(N\) và chỉ chứa hai ký tự là \(0\)\(1\). Bạn có thể thực hiện trên xâu \(S\) phép toán sau với số lượng bất kỳ:

  • Chọn chỉ số \(i(2\le i\le N)\) sao cho \(S[i]=1\) và thay thế \(S[i]=0\) và sau đó gán \(S[i-1]=1-S[i-1]\).

Chú ý: Chỉ số của xâu đánh từ số \(1\).

Hỏi: Ta có thể biến xâu \(S\) thành xâu \(T\) hay không ? Nếu có thì in ra số lượng phép toán tối thiểu cần dùng. Ngược lại, in ra \(-1\)

Input

  • Dòng thứ nhất chứa số \(t\) - Thể hiện số testcase

  • \(t\) block tiếp theo, mỗi block có dạng:

    \(N\text{ }\)

    \(S\text{ }\)

    \(T\).

    Với \(1\le N\le 5.10^5\).

Output

  • Ứng với mỗi testcase, in ra đáp án cần tìm

Example

Test 1

Input
2
2
01
10
2
00
11
Output
1
-1

Bình luận

Không có bình luận nào.