Hoán đổi hai xâu
Đề bài
Mô tả
Cho hai xâu và gồm các chữ cái Latinh thường, cùng độ dài . Các vị trí của cả hai xâu được đánh số từ đến .
Bạn được phép thực hiện các thao tác sau đây (bao nhiêu lần tùy ý, theo thứ tự bất kỳ):
- Chọn một chỉ số () và hoán đổi với ;
- Chọn một chỉ số () và hoán đổi với ;
- Chọn một chỉ số () và hoán đổi với .
Mục tiêu là làm cho hai xâu và trở nên giống hệt nhau bằng các thao tác trên. Tuy nhiên điều này không phải lúc nào cũng khả thi.
Trước khi bắt đầu các thao tác trên, bạn được phép thực hiện một số bước tiền xử lý. Trong mỗi bước tiền xử lý, bạn chọn một chỉ số () và một chữ cái tùy ý, rồi gán . Lưu ý: tiền xử lý chỉ được áp dụng cho xâu , và phải thực hiện xong trước khi bắt đầu bất kỳ thao tác hoán đổi nào.
Hãy tìm số bước tiền xử lý ít nhất cần thực hiện, sao cho sau đó có thể làm cho và giống hệt nhau bằng một dãy các thao tác hoán đổi. Số lượng thao tác hoán đổi thực hiện sau đó không quan trọng.
Dữ liệu vào
- Dòng thứ nhất chứa một số nguyên là độ dài của hai xâu.
- Dòng thứ hai chứa xâu gồm đúng chữ cái Latinh thường.
- Dòng thứ ba chứa xâu gồm đúng chữ cái Latinh thường.
Dữ liệu ra
- In ra một số nguyên duy nhất là số bước tiền xử lý ít nhất cần thực hiện.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 7 abacaba bacabaa |
4 | Thực hiện , , , , khi đó bbcabba. Sau đó dùng các hoán đổi swap và swap để hai xâu bằng nhau. Không thể dùng ít hơn 4 bước tiền xử lý. |
| 5 zcabd dbacz |
0 | Không cần bước tiền xử lý nào: dùng swap và swap là hai xâu bằng nhau. |
Bình luận