#include<bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
typedef tree<pair<int,int>, null_type, std::less<pair<int,int>>, rb_tree_tag,
tree_order_statistics_node_update> ordered_set;
#define ll long long
#define ld long double
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()
const ll INF = 1e9;
const ll mod = 1e9 + 7;
vector<string>res;
void rec(int idx , string s , string cur){
if(idx == s.size()){
string tmp = cur;
reverse(all(tmp));
if(tmp == cur){
res.push_back(cur);
}
return ;
}
string tmp = cur;
reverse(all(tmp));
if(cur == tmp){
res.push_back(cur);
}
rec(idx+1,s,cur+s[idx]);
rec(idx+1,s,"");
}
void Bavly() {
string s ;
cin >> s;
rec(0,s,"");
sort(all(res));
for(auto i : res){
if(i.size())cout << i << "\n";
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ll t =1;
//cin >> t;
while(t--){
Bavly();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKdHlwZWRlZiB0cmVlPHBhaXI8aW50LGludD4sIG51bGxfdHlwZSwgc3RkOjpsZXNzPHBhaXI8aW50LGludD4+LCByYl90cmVlX3RhZywgCiAgICAgICAgICAgICB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IG9yZGVyZWRfc2V0OwojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIGFsbChzKSBzLmJlZ2luKCkscy5lbmQoKQojZGVmaW5lIHJhbGwocykgcy5yYmVnaW4oKSxzLnJlbmQoKQoKY29uc3QgbGwgSU5GID0gMWU5Owpjb25zdCBsbCBtb2QgPSAxZTkgKyA3Owp2ZWN0b3I8c3RyaW5nPnJlczsKdm9pZCByZWMoaW50IGlkeCAsIHN0cmluZyBzICwgc3RyaW5nIGN1cil7CiAgICBpZihpZHggPT0gcy5zaXplKCkpewogICAgICAgIHN0cmluZyB0bXAgID0gY3VyOwogICAgICAgIHJldmVyc2UoYWxsKHRtcCkpOwogICAgICAgIGlmKHRtcCA9PSBjdXIpewogICAgICAgICAgICByZXMucHVzaF9iYWNrKGN1cik7CiAgICAgICAgfQogICAgICAgIHJldHVybiA7CiAgICB9CiAgICBzdHJpbmcgdG1wID0gY3VyOwogICAgcmV2ZXJzZShhbGwodG1wKSk7CiAgICBpZihjdXIgPT0gdG1wKXsKICAgICAgICByZXMucHVzaF9iYWNrKGN1cik7CiAgICB9CiAgICByZWMoaWR4KzEscyxjdXIrc1tpZHhdKTsKICAgIHJlYyhpZHgrMSxzLCIiKTsKfQp2b2lkIEJhdmx5KCkgewogICAgc3RyaW5nIHMgOwogICAgY2luID4+IHM7CiAgICByZWMoMCxzLCIiKTsKICAgIHNvcnQoYWxsKHJlcykpOwogICAgZm9yKGF1dG8gaSA6IHJlcyl7CiAgICAgICAgaWYoaS5zaXplKCkpY291dCA8PCBpIDw8ICJcbiI7CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgogICAgbGwgdCA9MTsKICAgIC8vY2luID4+IHQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIEJhdmx5KCk7ICAgICAgCiAgICB9Cn0=