#P1791. 完美的代价

完美的代价

题目描述

回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。

交换的定义是:交换两个相邻的字符。

例如,对于字符串 "mamad":

  • 第一次交换相邻的 'a' 和 'd',得到 "mamda";
  • 第二次交换相邻的 'm' 和 'd',得到 "madma";
  • 第三次交换相邻的 'm' 和 'a',得到 "madam"(回文串,完美!)。

输入格式

第一行是一个整数 N,表示接下来的字符串的长度(1 ≤ N ≤ 8000); 第二行是一个字符串,长度为 N,仅包含小写英文字母。

输出格式

如果可以通过相邻交换将字符串变为回文串,输出最少的交换次数; 否则输出 "Impossible"。

样例输入

5
mamad

样例输出

3

说明/提示

【数据规模】

  • 100% 的数据满足:1 ≤ N ≤ 8000,字符串仅由小写英文字母组成。