#include<bits/stdc++.h>
using namespace std;
int main()
{
int N;
scanf("%d",&N);
string s;
cin >> s;
int last = N - 1;//下面多次用到N-1
int step = 0;
bool flag =false;
//for (int i = 0; i < N; i++)
//上面的也行,不过用i < last时,整体上能减少计算机的运算量
for (int i = 0; i < last; i++)
{
for (int j = last; j >= i; j--)
{
if (i == j)
{
if (N % 2 == 0 || flag == true)
{//有两种情况:1,N为偶数,但其中有不能配对的,此时i和j指在同一个位置上
// 2 N为奇数,有两个以及以上不能配对的,此时i和j指在同一个位置上
cout << "Impossible";
return 0;
}
flag =true;
step += N / 2 - i;//这里加的值表示当前的数到中间位置所需要移动的步数
}
else if (s[i] == s[j])//这里针对的是i != j下的计步
{
for (int k = j; k < last; k++)
{
swap(s[k], s[k + 1]);//把k位置的字符换到last位置上去 这里是k+1,故而 k < last不是 k < last+1
step++;
}
last--;
break;
}
}
}
cout << step;
return 0;
}