#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int scatterPalindrom(string s)
{
int n = s.size();
int ans = 0;
vector<int>A(n+1,0);
for(int i=1;i<=n;i++)
{
A[i] = A[i-1] ^ (1<<(s[i-1]-'a'));
}
int x;
unordered_set<string>st;
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
x = A[j]^A[i-1];
if((x &(x-1) )==0)
{
if(st.count(s.substr(i-1,j-i+1))==0)
{
cout<<s.substr(i-1,j-i+1)<<endl;
st.insert(s.substr(i-1,j-i+1));
ans++;
}
}
}
}
return ans;
}
int main()
{
string s;
cin>>s;
cout<<scatterPalindrom(s)<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBzY2F0dGVyUGFsaW5kcm9tKHN0cmluZyBzKQp7CiAgICBpbnQgbiA9IHMuc2l6ZSgpOwogICAgaW50IGFucyA9IDA7CiAgICB2ZWN0b3I8aW50PkEobisxLDApOwoKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIEFbaV0gPSBBW2ktMV0gXiAoMTw8KHNbaS0xXS0nYScpKTsKICAgIH0KICAgIGludCB4OwogICAgdW5vcmRlcmVkX3NldDxzdHJpbmc+c3Q7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9aTtqPD1uO2orKykKICAgICAgICB7CiAgICAgICAgICAgIHggPSBBW2pdXkFbaS0xXTsKICAgICAgICAgICAgaWYoKHggJih4LTEpICk9PTApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKHN0LmNvdW50KHMuc3Vic3RyKGktMSxqLWkrMSkpPT0wKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvdXQ8PHMuc3Vic3RyKGktMSxqLWkrMSk8PGVuZGw7CiAgICAgICAgICAgICAgICAgICAgIHN0Lmluc2VydChzLnN1YnN0cihpLTEsai1pKzEpKTsKICAgICAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbnM7Cn0KaW50IG1haW4oKQp7CiAgICBzdHJpbmcgczsKICAgIGNpbj4+czsKICAgIGNvdXQ8PHNjYXR0ZXJQYWxpbmRyb20ocyk8PGVuZGw7CiAgICAKICAgIHJldHVybiAwOwp9