Tuyển sinh 10 chuyên Lam Sơn Thanh Hóa 2023 - Câu 4
Point: 100.0
Time limit: 1.0s
Memory limit: 1 G
Input: stdin
Output: stdout
Problem type
Ngôn ngữ cho phép
C, C#, C++, Pascal, Python

Cho xâu \(S = S_1S_2 ... S_i ... S_j ... S_n\) \((1 \le i \le j \le n)\) chỉ gồm các chữ cái tiếng Anh in thường.

Phép đảo ngược xâu là phép biến đổi xâu ban đầu thành một xâu mới có thứ tự các kí tự ngược lại so với xâu ban đầu. Ví dụ: “ten” đảo ngược thành “net”, “time” đảo ngược thành “emit”.

Mỗi lần áp dụng phép đảo ngược xâu trên một xâu con liên tiếp tử vị trí \(i\) đến vị trí \(j\) của xâu \(S\) sẽ thu được xâu \(S' = S_1S_2 ... S_j ... S_i ... S_n\).

Gọi \(M\) là tập hợp các xâu \(S'\).

Yêu cầu:

Tính số lượng các xâu khác nhau trong tập hợp \(M\).

Dữ liệu:

Vào từ tệp văn bản CAU4.INP gồm một dòng là xâu \(S\) (độ dài không quá \(2.10^5\)).

Kết quả:

Ghi ra tệp văn bản CAU4.OUT một số nguyên là kết quả của bài toán.

Ví dụ:

CAU4.INP CAU4.OUT Giải thích
tent 6 Tập M gồm: tent, etnt, nett, tnet, ttne, tetn.

Ràng buộc:

\(50\%\) số điểm có \(1 \le n \le 100\);

\(50\%\) số điểm có \(100 < n \le 2.10^5\).