atcoder#AGC048A. [AGC048A] atcoder < S

[AGC048A] atcoder < S

配点 : 300300

問題文

英小文字からなる文字列 SS が与えられます. すぬけくんは,SS隣り合う 22 文字をスワップするという操作を行うことができます. 例えば,S=S=agc なら,11 回の操作で,SSgac (ag をスワップ) もしくは acg (gc をスワップ) に変換できます.

すぬけくんはこの操作を 00 回以上繰り返し, 辞書順で atcoder $ となるようにしたいです.

辞書順で $x< y$ の定義

文字列 x,yx,y が辞書順で x<yx< y であるとは,以下のうちいずれかの条件を満たすことを意味します.

  • ある整数 ii (1imin(x,y)1 \leq i \leq \mathrm{min}(|x|,|y|)) が存在して,x,yx,y は先頭の i1i-1 文字が一致しており,かつ, xxii 文字目は yyii 文字目よりアルファベット順で真に小さい.
  • x<y|x|< |y| であり,yy の先頭の x|x| 文字は xx と等しい.
目標が達成可能かどうか判定し,可能な場合は必要な操作回数の最小値を求めてください.

11 つの入力ファイルにつき,TT 個のテストケースを解いてください.

制約

  • 1T1001 \leq T \leq 100
  • 1S10001 \leq |S| \leq 1000
  • SS は英小文字からなる文字列.

入力

入力は以下の形式で標準入力から与えられる. 入力の 11 行目は以下のとおりである.

TT

そして,TT 個のテストケースが続く. これらはそれぞれ以下の形式で与えられる.

SS

出力

各テストケースについて,目標が達成不可能な場合は 1-1,可能な場合は必要な操作回数の最小値を出力せよ. 各テストケースごとに改行せよ.

3
atcodeer
codeforces
aaa
1
0
-1
  • 11 番目のテストケース: 例えば,末尾の 22 文字をスワップすることで,S=S=atcodere >> atcoder となります.
  • 22 番目のテストケース: 操作を行うまでもなく,S=S=codeforces >> atcoder です.
  • 33 番目のテストケース: どのように操作を行っても S>S> atcoder にはなりません.