Бір алмастыру


Шешімді жөнелту

Ұпайлар: 100 (partial)
Уақыт шектеуі: 1.0s
Жад шектеуі: 256M

Author:
Problem types
Рұқсат етілген тілдер
Assembly, Awk, Brain****, C, C++, Go, Java, Kotlin, Pascal, Perl, PHP, Python, Sed, Text

Әбілмансұр \(S\) жолын тексереді. Ол дәл бір рет \(i < j\) позицияларын таңдап, \(S[i]\) және \(S[j]\) таңбаларын орындарымен ауыстырады. Осындай әрекеттен кейін қанша әртүрлі жол алуға болады?

Енгізу

Бір жол \(S\) (\(2 \le |S| \le 10^6\)), кіші ағылшын әріптерінен тұрады.

Шығару

Дәл бір рет екі таңбаны алмастыру арқылы алынатын әртүрлі жолдардың санын шығарыңыз.

Бағалау жүйесі

Топ Қосымша шектеулер Ұпай Қажетті топтар
1 \(S\) Ұзындығы \(\le 9\) 20
2 \(S\) Ұзындығы \(\le 499\) 20 1
3 \(S\) тек a және b әріптерінен тұрады 20 1
4 Толық шектеулер 40 1, 2, 3

Мысалдар

Енгізу 1
aab
Жауап 1
3

Ескертпелер

Жұптар: (1,2) -> aab, (1,3) -> baa, (2,3) -> aba. 3 әртүрлі жол алынады.