Mô tả
Kỹ sư mạng Nguyễn Văn Bình đang làm việc tại MekongNet, nhà cung cấp dịch vụ internet dọc Đồng bằng sông Cửu Long. Mỗi khi một gói tin đi qua nhiều trạm chuyển tiếp, trạm cuối sẽ tính một giá trị checksum — một số nguyên không âm — để kiểm tra xem dữ liệu có bị nhiễu trên đường truyền hay không.
Trạm phát tạo ra gói tin kèm giá trị checksum gốc. Trạm thu nhận được gói tin và tính lại checksum mới. Nếu hai checksum khác nhau, Bình cần biết chính xác có bao nhiêu bit khác nhau giữa hai giá trị — tức số bit cần lật (0 thành 1 hoặc 1 thành 0) để biến checksum nhận được thành checksum gốc. Con số này cho biết mức độ nhiễu: càng nhiều bit khác thì gói tin càng hư hỏng nặng.
Đầu vào
Hai số nguyên không âm a và b (0 ≤ a, b ≤ 10^9), lần lượt là checksum gốc và checksum nhận được, viết trên cùng một dòng cách nhau bởi một khoảng trắng.
Đầu ra
In ra một số nguyên duy nhất — số bit cần lật để biến b thành a.
Ràng buộc
- 0 ≤ a, b ≤ 10^9
- Cần xử lý hiệu quả với số có tới 30 bit.
Ví dụ
Ví dụ 1:
Input:
7 10
Output:
1
Giải thích: 7 ở dạng nhị phân là 111, 10 là 1010. Đ padding về cùng độ dài: 0111 và 1010. So từng cặp bit: 0 khác 1 (lật), 1 khác 0 (lật), 1 khác 1 (giống), 1 khác 0 (lật). Tổng cộng 3 bit khác nhau. Vậy đáp án là 3.
Ví dụ 2:
Input:
5 5
Output:
0
Giải thích: Hai checksum bằng nhau, không có bit nào cần lật.