Time Limit: 2 sec / Memory Limit: 256 MB
配点 : 800 点
問題文
英小文字からなる文字列 S が与えられます。 隣り合う 2 つの文字を入れ替える操作を繰り返して S を回文にできるかどうか判定し、できる場合は操作の最小回数を求めてください。
制約
- 1 \leq |S| \leq 2 × 10^5
- S は英小文字からなる
入力
入力は以下の形式で標準入力から与えられる。
S
出力
回文にできない場合、-1
を出力せよ。そうでない場合、操作の最小回数を出力せよ。
入力例 1
eel
出力例 1
1
以下の操作で、S を回文にすることができます。
- 2 文字目と 3 文字目を入れ替える。新しい S は
ele
となる。
入力例 2
ataatmma
出力例 2
4
以下の操作で、S を回文にすることができます。
- 5 文字目と 6 文字目を入れ替える。新しい S は
ataamtma
となる。 - 4 文字目と 5 文字目を入れ替える。新しい S は
atamatma
となる。 - 3 文字目と 4 文字目を入れ替える。新しい S は
atmaatma
となる。 - 2 文字目と 3 文字目を入れ替える。新しい S は
amtaatma
となる。
入力例 3
snuke
出力例 3
-1
S を回文にすることはできません。
Score : 800 points
Problem Statement
You are given a string S consisting of lowercase English letters. Determine whether we can turn S into a palindrome by repeating the operation of swapping two adjacent characters. If it is possible, find the minimum required number of operations.
Constraints
- 1 \leq |S| \leq 2 × 10^5
- S consists of lowercase English letters.
Input
Input is given from Standard Input in the following format:
S
Output
If we cannot turn S into a palindrome, print -1
. Otherwise, print the minimum required number of operations.
Sample Input 1
eel
Sample Output 1
1
We can turn S into a palindrome by the following operation:
- Swap the 2-nd and 3-rd characters. S is now
ele
.
Sample Input 2
ataatmma
Sample Output 2
4
We can turn S into a palindrome by the following operation:
- Swap the 5-th and 6-th characters. S is now
ataamtma
. - Swap the 4-th and 5-th characters. S is now
atamatma
. - Swap the 3-rd and 4-th characters. S is now
atmaatma
. - Swap the 2-nd and 3-rd characters. S is now
amtaatma
.
Sample Input 3
snuke
Sample Output 3
-1
We cannot turn S into a palindrome.