Problem
Lập trình viên Vasya đã không may mắn - thay vì một kỳ nghỉ, anh ấy được cử đi công tác để tham dự một hội nghị khoa học. “Chúng ta cần nâng cao trình độ kiến thức,” ông chủ nói, “Một hội nghị quan trọng về mật mã đang được tổ chức ở Pháp - và ở đó họ đã mã hóa vào thời Richelieu và bẻ khóa mật mã của người khác vào thời Vieta.”
Vasya nhanh chóng phát hiện ra rằng anh ấy đã nhìn thấy tất cả các bức tranh của Louvre ở đâu đó, cảnh tượng Tháp Eiffel trở nên nhàm chán với anh ấy ngay cả trước khi con chuột lau nó khỏi tấm thảm, và chúng tôi tạo ra những kim tự tháp bằng kính như vậy cho đủ loại ki-ốt và quán ăn đáng ngờ. Nói một cách dễ hiểu, đơn giản là không có gì để xem ở Paris, không có nơi nào để câu cá nên Vasya phải tham gia báo cáo tại hội nghị.
Một trong những diễn giả, một lần nữa cố gắng làm sáng tỏ các mật mã của Bacon, đưa ra giả thuyết rằng có thể tìm thấy chìa khóa cho những bí ẩn của Bacon bằng cách phân tích tất cả các chuỗi con có thể có trong các tác phẩm của Bacon. "Nhưng có quá nhiều người trong số họ!" Vasya ngạc nhiên thành tiếng. "Không, không nhiều lắm!" - người nói hét lên, - "Hãy tính toán, và bạn sẽ tự mình thấy!"
Buổi tối hôm đó, Vasya tìm thấy toàn bộ tác phẩm của Bacon trên Internet. Anh ấy đã viết một chương trình chuyển đổi văn bản thành một dòng dài, loại bỏ tất cả khoảng trắng và dấu chấm câu khỏi văn bản. Và bây giờ Vasya đang rất bối rối - làm thế nào để đếm số chuỗi con khác nhau của chuỗi này?
Đầu vào
Đầu vào chứa một chuỗi không trống mà Vasya nhận được. Chuỗi chỉ bao gồm các ký tự Latinh viết thường. Độ dài của nó không vượt quá 2000 ký tự.
Đầu ra
In ra số chuỗi con khác nhau của chuỗi này.
Ví dụ
<đầu>
# |
Đầu vào |
Đầu ra |
điều>
1 |
aaba |
8 |