아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Adrian

시간 제한1초메모리 제한1024 MB

요약
길이가 최대 100만인 소문자 문자열에서 글자를 재배열해 회문을 만들 수 있는 부분 문자열의 개수를 센다.
난이도

보통10점 중 7점

유형
누적 합, 문자열, 비트 연산, 조합론
정답자
아직 제출이 없습니다

문제

Mladi Adrian se izgubio tumarajući po bespućima Engleske i naletio na čarobnjaka koji mu je dao papir na kojemu je bila zapisana neka riječ. Čarobnjak mu je naredio da prebroji koliko u toj riječi postoji podriječi od kojih se premetanjem slova u njoj može dobiti palindrom. Drugim riječima, zanima ga koliko postoji parova indeksa (i, j) (1 ≤ i ≤ j ≤ duljina riječi), takvih da podriječ koju dobijemo kada iz zadane riječi uzmemo samo slova od i-tog do j-tog uključivo, možemo premetanjem slova pretvoriti u palindrom. Adrian se uplašio i zapitao čarobnjaka: “Palindrom? O čemu govoriš? Što je to?”. Čarobnjak mu je pojasnio da se radi o riječi koja ostane ista kada joj se obrne poredak slova, primjerice riječ topot. Pomozite Adrianu riješiti čarobnjakovu smicalicu.

입력

U prvom i jedinom retku nalazi se riječ od najviše 1 000 000 malih slova engleske abecede.

출력

U jedini redak ispišite traženi broj podriječi iz teksta zadatka.

힌트

Opis drugog primjera: Podriječi su: t, p, o, o, t, oo, poo (premetanjem može postati opo), oot (premetanjem može postati oto) i tpoot (premetanjem može postati topot).

예제3

  1. 예제 1

    입력
    carobnjak
    
    예상 출력
    9
    
  2. 예제 2

    입력
    tpoot
    
    예상 출력
    9
    
  3. 예제 3

    입력
    abbabaab
    
    예상 출력
    26