Điều hướng chính

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

Tập phân biệt

Dễ

  • 100 Điểm
  • 0% Tỉ lệ AC
  • 0 Số AC
  • 256M Bộ nhớ giới hạn
  • 1.0s Giới hạn thời gian

Cho xâu ký tự \(S\) bao gồm các chữ cái trong bảng chữ cái Latin viết thường (tức là các ký tự từ 'a' đến 'z). Trong xâu này, \(S_{i}\) là ký tự ở vị trí thứ \(i\) (tính từ \(1\)). Ta định nghĩa một xâu con liên tiếp của \(S\), ký hiệu là , là một đoạn liên tục trong \(S\) bắt đầu từ vị trí thứ \(l\) đến vị trí thứ \(r\). Xâu con này bao gồm các ký tự \(S_{l}S_{l + 1}...S_{r}\) theo đúng thứ tự như trong \(S\). Lưu ý: Xâu rỗng là xâu con của \(S\).

Với mỗi xâu con liên tiếp \(S[l...r]\), ta định nghĩa \(P(S[l...r])\) là tập hợp các ký tự khác nhau xuất hiện trong đoạn từ \(l\) đến \(r\) của xâu \(S\).
Ví dụ: Với \(S = abacacb\), ta có:

  • \(S[1..2] = aba\), \(P(S[1...2]) = {a, b}\)
  • \(S[4. .5] = ca\), \(P(S[4...5]) = {a, b}\)
  • \(S[2. .7] = bacacb\), \(P(S[2...7] = {a, b, c}\)

Yêu cầu: Trong tất cả các xâu con liên tiếp của \(S\), hãy tính số tập \(P(S[l...r])\) phân biệt.

Input

Một dòng duy nhất chứa xâu \(S\) \((|S| \leq 10^6)\). Dữ liệu đảm bảo \(S\) chỉ gồm các ký tự tiếng Anh in thường.

Output

Một số nguyên duy nhất là số tập \(P\) phân biệt tìm được.

Example

Test 1

Input
abacacb
Output
8
Note

\(P(S[1..1])={a}\)

\(P(S[2..2])={b}\)

\(P(S[4..4])={c}\)

\(P(S[1..2])={a,b}\)

\(P(S[3..4])={a,c}\)

\(P(S[6..7])={b,c}\)

\(P(S[5..7])={a,b,c}\)

Xâu rỗng

Scoring

  • Có \(25\%\) số điểm của bài với \(n \leq 500\)
  • Có \(25\%\) số điểm khác với \(n \leq 5000\)
  • Có \(25\%\) số điểm khác thỏa mãn \(n \leq 50000\)
  • Còn lại không có điều kiện gi thêm

Bình luận

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