Palindrom
면접 대비시간 제한1초메모리 제한1024 MB
길이가 200000 이하인 a와 b로 이루어진 문자열이 주어질 때, 인접한 두 문자를 교환하는 연산만으로 팰린드롬으로 만들기 위한 최소 교환 횟수를 구하고, 불가능하면 -1을 출력한다.
문제
Bajtek, dzięki uczęszczaniu na kółko informatyczne, dowiedział się czym jest palindrom. Palindrom to słowo, które jest takie samo czytane od lewej do prawej jak od prawej do lewej. Na przykład słowa „oko”, „kajak”, „kobyłamamałybok” i „ababbaba” są palindromami, zaś słowa „kajaki”, „zoo”, „alamakota” i „abaababa” nimi nie są.
Chłopak ucieszony nową wiedzą szybko otworzył notatnik (nie zeszyt, taki program) i zapisał w nim słowo składające się z liter ’a’ oraz ’b’. Po chwili zastanowienia dotarło jednak do niego, że jego słowo niekoniecznie musi być palindromem. Postanowił to jednak naprawić! W ciągu jednej sekundy chłopak może wybrać dwie sąsiadujące ze sobą litery i zamienić je miejscami. Czy będzie w stanie, wykonując ciąg takich ruchów (lub nie robiąc nic) doprowadzić do tego, że jego słowo będzie palindromem? Jeśli tak, to ile minimalnie sekund zajmą mu takie zmiany? Pomóż mu i napisz program który to obliczy!
입력
W jedynym wierszu wejścia znajduje się niepuste słowo zapisane w notatniku Bajtka. Słowo to może zawierać jedynie znaki ’a’ oraz ’b’, a jego długość nie przekroczy 200 000 znaków.
출력
Na wyjściu powinna znaleźć się jedna liczba całkowita, oznaczająca minimalną liczbę sekund potrzebną do zmienienia słowa z notatnika Bajtka w palindrom. Jeśli nie jest to możliwe, zamiast tego powinna się tam znaleźć liczba −1.
힌트
Wyjaśnienie przykładu: W pierwszym teście przykładowym Bajtek może (na przykład) wykonać ciąg zmian abbaaab → babaaab → baabaab, który poprawnie zamieni jego słowo w palindrom, co zajmie mu dwie sekundy. Można wykazać, że nie da się zamienić jego słowa w palindrom szybciej.
W drugim teście przykładowym słowo Bajtka może być postaci ab i ba. Żadne z tych słów nie jest palindromem, przez co chłopak nie będzie mógł wykonać zadania.