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\).