Điều hướng chính

Nhắn tin NQ Coding

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập biendoixauchuyentinlamsonthanh

Biến đổi xâu

Dễ Xâu ký tự (string)

  • 100p Điểm
  • 1.0s Thời gian
  • 256M Bộ nhớ
  • 100% Tỉ lệ AC
  • 1 Số AC

Cho xâu \(S = S_1 S_2 \dots 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_1 S_2 … S_{i-1} \, S_j S_{j-1} … S_i \, S_{j+1} … S_n. \]

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

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

Input

Vào từ tệp văn bản gồm một dòng là xâu \(S\) \((1 \le |S| \le 2 \cdot 10^5)\).

Output

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

Input

%
tent

Output

%
6

Notes

Với ví dụ trên, tập \(M\) gồm:

\[ \text{tent}, \text{etnt}, \text{nett}, \text{tnet}, \text{ttne}, \text{tetn}. \]

Scoring

  • (50%) \(1 \le n \le 100\);
  • (50%) \(100 < n \le 2 \cdot 10^5\).

Bình luận

Chưa có bình luận nào.