Sổ tay bỏ túi
Đề bài
Mô tả
Cho cái tên, mỗi tên là một xâu gồm đúng chữ cái Latin in hoa. Các tên được đánh số từ đến theo thứ tự đã cho.
Một thao tác được định nghĩa như sau: chọn ba số nguyên với và , rồi hoán đổi tiền tố độ dài của tên thứ và tên thứ . Ví dụ, với hai tên "CBDAD" và "AABRD", nếu hoán đổi tiền tố độ dài thì thu được "AABAD" và "CBDRD".
Bạn được phép thực hiện thao tác trên bao nhiêu lần tùy ý; mỗi lần chọn độc lập với các lần trước. Hãy đếm xem tên ở vị trí số có thể trở thành bao nhiêu tên khác nhau. Vì kết quả có thể rất lớn, hãy in ra kết quả theo modulo .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số lượng tên và độ dài mỗi tên.
- dòng tiếp theo, mỗi dòng chứa một tên gồm đúng chữ cái Latin in hoa.
Dữ liệu ra
- In ra một số nguyên duy nhất — số lượng tên khác nhau có thể xuất hiện ở vị trí số , lấy theo modulo .
Ràng buộc
- Mỗi tên gồm đúng chữ cái Latin in hoa (A–Z).
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 3 AAB BAA |
4 | Ở vị trí số 1 có thể tạo ra: "AAB", "AAA", "BAA" và "BAB", tổng cộng 4 tên. Xét từng cột: cột 1 có {A, B}, cột 2 có {A}, cột 3 có {B, A}, nên số tên là . |
| 4 5 ABABA BCGDG AAAAA YABSA |
216 | Số chữ cái phân biệt ở mỗi cột lần lượt là , nên kết quả là . |
Bình luận