//minimum adjacent swaps to make a string to its palindrome
#include<bits/stdc++.h>
using namespace std;
bool check(string s)
{
int n=s.length();
map<char,int> m;
for(auto i:s)
{
m[i]++;
}
int cnt=0;
for(auto i=m.begin();i!=m.end();i++)
{
if(i->second%2)
{
cnt++;
}
}
if(n%2&&cnt==1){return true;}
if(!(n%2)&&cnt==0){return true;}
return false;
}
int main()
{
string a;
while(cin>>a)
{
if(a[0]=='0')
{
break;
}
string s;s=a;
int n=s.length();
//first check if
int cnt=0;
bool ini=false;
if(n%2){ini=true;}
if(check(s))
{
for(int i=0;i<n/2;i++)
{
bool fl=false;
int j=0;
for(j=n-1-i;j>i;j--)
{
if(s[j]==s[i])
{
fl=true;
for(int k=j;k<n-1-i;k++)
{
swap(s[k],s[k+1]);
cnt++;
// cout<<cnt<<endl<<flush;
}
// cout<<" "<<i<<" "<<cnt<<endl<<flush;
break;
}
}
if(!fl&&ini)
{
for(int k=i;k<n/2;k++)
{
swap(s[k],s[k+1]);
cnt++;
}
// cout<<cnt<<" "<<i<<" "<<endl<<flush;
}
}
cout<<cnt<<endl;
}
else{
cout<<"Impossible"<<endl;
}
}
}
Ly9taW5pbXVtIGFkamFjZW50IHN3YXBzIHRvIG1ha2UgYSBzdHJpbmcgdG8gaXRzIHBhbGluZHJvbWUKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKYm9vbCBjaGVjayhzdHJpbmcgcykKewogICAgaW50IG49cy5sZW5ndGgoKTsKICAgIG1hcDxjaGFyLGludD4gbTsKICAgIGZvcihhdXRvIGk6cykKICAgIHsKICAgICAgICBtW2ldKys7CiAgICB9CiAgICBpbnQgY250PTA7CiAgICBmb3IoYXV0byBpPW0uYmVnaW4oKTtpIT1tLmVuZCgpO2krKykKICAgIHsKICAgICAgICBpZihpLT5zZWNvbmQlMikKICAgICAgICB7CiAgICAgICAgICAgIGNudCsrOwogICAgICAgIH0KICAgIH0KICAgIGlmKG4lMiYmY250PT0xKXtyZXR1cm4gdHJ1ZTt9CiAgICBpZighKG4lMikmJmNudD09MCl7cmV0dXJuIHRydWU7fQogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpCnsKICAgIHN0cmluZyBhOwogICAgd2hpbGUoY2luPj5hKQogICAgewogICAgICAgIGlmKGFbMF09PScwJykKICAgICAgICB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdHJpbmcgcztzPWE7CiAgICAgICAgaW50IG49cy5sZW5ndGgoKTsKICAgICAgICAvL2ZpcnN0IGNoZWNrIGlmCiAgICAgICAgaW50IGNudD0wOwogICAgICAgIGJvb2wgaW5pPWZhbHNlOwogICAgICAgIGlmKG4lMil7aW5pPXRydWU7fQogICAgICAgIGlmKGNoZWNrKHMpKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuLzI7aSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBib29sIGZsPWZhbHNlOwogICAgICAgICAgICAgICAgaW50IGo9MDsKICAgICAgICAgICAgICAgIGZvcihqPW4tMS1pO2o+aTtqLS0pCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIGlmKHNbal09PXNbaV0pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmbD10cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGs9ajtrPG4tMS1pO2srKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcChzW2tdLHNbaysxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbnQrKzsKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291dDw8Y250PDxlbmRsPDxmbHVzaDsKICAgICAgICAgICAgICAgICAgICAgICAgfQovLyAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQ8PCIgIjw8aTw8IiAiPDxjbnQ8PGVuZGw8PGZsdXNoOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZighZmwmJmluaSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGs9aTtrPG4vMjtrKyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzd2FwKHNba10sc1trKzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgY250Kys7CgogICAgICAgICAgICAgICAgICAgIH0KLy8gICAgICAgICAgICAgICAgICAgIGNvdXQ8PGNudDw8IiAiPDxpPDwiICI8PGVuZGw8PGZsdXNoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQ8PGNudDw8ZW5kbDsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgY291dDw8IkltcG9zc2libGUiPDxlbmRsOwogICAgICAgIH0KICAgIH0KCn0K