Matej, chàng hiệp sĩ trẻ tuổi, sau một hành trình dài và gian nan, đã đến đích cuối cùng - ngôi nhà của mụ phù thủy độc ác Marija. Để hoàn thành cuộc phiêu lưu, anh ta cần giải mã câu đố cuối cùng mà mụ phù thủy đưa ra. Nhưng trước hết, Matej cần tìm hiểu về một cấu trúc dữ liệu gọi là cây tiền tố (trie).
Cây tiền tố là gì?
Cây tiền tố là một cấu trúc dữ liệu giúp lưu trữ tất cả các tiền tố của một tập hợp từ theo cách sau:
- Mỗi nhánh của cây được ghi chú bằng một chữ cái trong bảng chữ cái.
- Gốc của cây đại diện cho tiền tố rỗng (không có ký tự nào).
- Các nút khác trong cây đại diện cho các tiền tố không rỗng. Mỗi nút biểu thị cho một tiền tố được tạo thành bằng cách nối các ký tự trên các nhánh dẫn từ gốc cây đến nút đó (theo thứ tự từ gốc đi lên).
- Không bao giờ có hai nhánh cùng một chữ cái xuất phát từ một nút (điều này giúp giảm số lượng nút cần thiết để lưu trữ tất cả các tiền tố).
Ví dụ về cây tiền tố:
Cây tiền tố cho các từ: “A”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”.
Thử thách của Mụ phù thủy Marija:
Sau khi hiểu về cây tiền tố, Matej phải đối mặt với thử thách thực sự! Mụ phù thủy Marija có ~N~ từ, mỗi từ được tạo thành từ các chữ cái thường trong bảng chữ cái tiếng Anh. Câu đố sẽ rất đơn giản nếu mụ ta chỉ muốn biết số lượng nút trong cây tiền tố cho tập hợp các từ đó. Nhưng mụ phù thủy lại có yêu cầu khác: Tìm số nút tối thiểu mà một cây tiền tố có thể có sau khi hoán vị các chữ cái của mỗi từ theo cách bất kỳ.
Input
dòng đầu gồm ~N~ (1 ≤ N ≤ 16)
~N~ dòngtiếp theo gồm đó 1 các từ viết thường có độ dài không quá ~1000000~ ký tự
Output
- 1 dòng duy nhất là kết quả tính được
Example
4
baab
abab
aabb
bbaa
4
Bình luận