#P1791. 完美的代价
完美的代价
题目描述
回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符。
例如,对于字符串 "mamad":
- 第一次交换相邻的 'a' 和 'd',得到 "mamda";
- 第二次交换相邻的 'm' 和 'd',得到 "madma";
- 第三次交换相邻的 'm' 和 'a',得到 "madam"(回文串,完美!)。
输入格式
第一行是一个整数 N,表示接下来的字符串的长度(1 ≤ N ≤ 8000); 第二行是一个字符串,长度为 N,仅包含小写英文字母。
输出格式
如果可以通过相邻交换将字符串变为回文串,输出最少的交换次数; 否则输出 "Impossible"。
样例输入
5
mamad
样例输出
3
说明/提示
【数据规模】
- 100% 的数据满足:1 ≤ N ≤ 8000,字符串仅由小写英文字母组成。