Pagini recente » Cod sursa (job #2935072) | Cod sursa (job #2360246) | Cod sursa (job #2489303) | Cod sursa (job #437512) | Cod sursa (job #2940882)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("palind.in");
ofstream out ("palind.out");
void solve()
{
string s;
in >> s;
int f[26] = {};
for (char ch : s)
{
f[ch - 'a']++;
}
int odd = 0;
for (int i=0; i<26; i++)
odd += (f[i] & 1);
int n = s.size();
if (odd > n % 2)
{
out << -1;
return;
}
int l=0, r=n-1;
int ans = 0;
while (l < r)
{
if (f[s[l]-'a'] > 1)
{
int pos = r;
while (pos >= l)
{
if (s[pos] == s[l])
{
for (int i=pos; i<r; i++)
swap(s[i], s[i+1]), ans++;
break;
}
pos--;
}
}
else
{
int pos = l;
while (pos <= r)
{
if (s[pos] == s[r])
{
for (int i=l; i<pos; i++)
swap(s[i], s[i+1]), ans++;
break;
}
pos++;
}
}
l++, r--;
}
out << ans;
}
int main()
{
int t;
in >> t;
while (t--)
solve(), out << '\n';
return 0;
}