Vì một năm mới an lành
Xem dạng PDFTrong không khí rộn ràng của những ngày cận kề Tết Nguyên Đán, khi mọi nhà đều tất bật dọn dẹp nhà cửa, lau chùi bàn thờ tổ tiên, gói bánh chưng xanh, bánh tét thơm lừng, treo đèn lồng đỏ, cắm hoa mai hoa đào rực rỡ, và chuẩn bị mâm cỗ cúng ông Công ông Táo, người ta thường rất chú ý đến những điều kiêng kỵ để năm mới được bình an, may mắn, tài lộc dồi dào. Có những thứ tuyệt đối không được để ở vị trí cố định, vì theo quan niệm dân gian, nếu để sai thì dễ gặp chuyện không hay, vận hạn kéo đến, ảnh hưởng đến cả năm.
Tương tự như việc sắp đặt đồ đạc trong nhà sao cho hợp phong thủy đón Tết, năm nay gia đình bạn nhận trách nhiệm sắp xếp lại một dãy các vật phẩm quan trọng – mỗi vật phẩm mang một giá trị riêng, và mỗi vị trí trong nhà lại có một giá trị "kiêng kỵ" không được trùng khớp. Cụ thể, bạn được giao cho hai dãy số nguyên có cùng độ dài ~n~: dãy ~a~ và dãy ~f~.
Dãy ~a~ mô tả giá trị hiện tại đang nằm ở từng vị trí trong nhà (đánh số từ ~0~ đến ~n-1~). Ban đầu, vị trí ~i~ đang chứa vật phẩm có giá trị ~a_i~. Còn dãy ~f~ thì liệt kê rõ ràng giá trị nào là "cấm kỵ" ở từng vị trí: ~f_i~ chính là con số tuyệt đối không được để ở vị trí ~i~, vì nếu để như vậy thì coi như "phạm húy", năm mới dễ gặp điều không tốt lành.
Để sửa chữa và đón một cái Tết thật suôn sẻ, bạn được phép thực hiện thao tác duy nhất: chọn hai vị trí khác nhau ~i~ và ~j~ ~(i ≠ j)~, rồi hoán đổi giá trị đang nằm ở hai vị trí đó trong dãy ~a~. Bạn có thể thực hiện thao tác này bao nhiêu lần tùy thích, kể cả không thực hiện lần nào nếu mọi thứ đã ổn.
Mục tiêu cuối cùng là sau tất cả các lần hoán đổi (hoặc không hoán đổi), ở mọi vị trí ~i~ đều phải có ~a_i ≠ f_i~, nghĩa là không còn bất kỳ vật phẩm nào bị đặt sai vị trí theo danh sách kiêng kỵ nữa.
Hãy tính toán xem cần ít nhất bao nhiêu lần hoán đổi để đạt được trạng thái hợp phong thủy ấy, đón năm mới thật bình an, tài lộc đến nhà. Nếu dù hoán đổi thế nào đi nữa mà vẫn không thể làm cho tất cả các vị trí đều tránh được giá trị cấm kỵ tương ứng (ví dụ có quá nhiều xung khắc không thể giải quyết), thì trả về ~-1~.
Dữ liệu
- Dòng đầu tiên chứa số nguyên ~n~ ~(1 \le n \le 10^5)~.
- ~n~ dòng tiếp theo, mỗi dòng chứa ~2~ số nguyên ~a_i~ và ~f_i~ ~(1 \le a_i, f_i \le 10^9)~.
Kết quả
- Trả về số nguyên nhỏ nhất biểu thị số lần hoán đổi tối thiểu cần thực hiện. Nếu không thể đạt được trạng thái đó dù hoán đổi bao nhiêu lần, trả về ~-1~.
Ràng buộc
- Subtask ~1~ ~(30 \%)~: ~n \le 6~.
- Subtask ~2~ ~(70 \%)~: Giới hạn đề bài.
Sample Input
3
9 9
1 7
2 2
Sample Output
1
Giải thích
- Hoán đổi ~a_1~ và ~a_3~.
Bình luận