atcoder#AGC048A. [AGC048A] atcoder < S
[AGC048A] atcoder < S
题目描述
英小文字からなる文字列 が与えられます. すぬけくんは, の隣り合う 文字をスワップするという操作を行うことができます. 例えば,agc
なら, 回の操作で, を gac
(a
と g
をスワップ) もしくは acg
(g
と c
をスワップ) に変換できます.
すぬけくんはこの操作を 回以上繰り返し, 辞書順で atcoder
となるようにしたいです.
辞書順で x&lt\ y の定義 文字列 が辞書順で x&lt\ y であるとは,以下のうちいずれかの条件を満たすことを意味します.
- ある整数 () が存在して, は先頭の 文字が一致しており,かつ, の 文字目は の 文字目よりアルファベット順で真に小さい.
- |x|&lt\ |y| であり, の先頭の 文字は と等しい.
目標が達成可能かどうか判定し,可能な場合は必要な操作回数の最小値を求めてください.
つの入力ファイルにつき, 個のテストケースを解いてください.
输入格式
入力は以下の形式で標準入力から与えられる. 入力の 行目は以下のとおりである.
そして, 個のテストケースが続く. これらはそれぞれ以下の形式で与えられる.
输出格式
各テストケースについて,目標が達成不可能な場合は ,可能な場合は必要な操作回数の最小値を出力せよ. 各テストケースごとに改行せよ.
题目大意
给你一个由小写英文字母组成的字符串 。 Snuke 可以交换 中相邻的 个字符。 例如,如果 agc
,那么在一次操作中, 变为 gac
(交换 a
和 g
)或 acg
(g
和 c
交换) .
Snuke 想要重复此操作 次或若干次,使得 atcoder
的字典序小于 。
判断目标是否可以实现,若能则求出需要的最少操作次数。
每个测试点包含 组数据。
【提示】
数据千万条,清空第一条。多测不清空,爆零两行泪。
3
atcodeer
codeforces
aaa
1
0
-1
提示
制約
- は英小文字からなる文字列.
Sample Explanation 1
- 番目のテストケース: 例えば,末尾の 文字をスワップすることで,atcodere
atcoder
となります. - 番目のテストケース: 操作を行うまでもなく,codeforces
atcoder
です. - 番目のテストケース: どのように操作を行っても atcoder
にはなりません.