#include<bits/stdc++.h>
#define S string
#define ll long long
#define nl "\n"
#define speed ios_base::sync_with_stdio(false) , cin.tie(NULL) , cout.tie(NULL);
using namespace std;
vector<pair<int, int> >d={
{0,-1},{0,1},{1,0},{-1,0}
};
vector<char>dd={'L', 'R' , 'D' , 'U'};
const int MOD = 1e9 + 7;
const int N = 1001;
int main() {
speed
S s;
while (getline(cin , s)){
if (s.size() == 0) break;
int mem[N][N];
function <int(int , int )> dp =[&](int i , int k)->int {
if ( k <= i)return 0;
int&res=mem[i][k];
if (!res)return res;
res = 1e9;
if ( s[i] != s[k]) {
char c = s[k];
s.insert(s.begin() + i , c);
res =min(res, dp(i + 1 , k) + 1);
}
else res = dp( i + 1 , k - 1);
return res;
};
memset(mem , -1 , sizeof(mem));
cout << dp(0 , s.size()-1 ) << " ";
cout<< s<<nl;}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBTIHN0cmluZwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIG5sICJcbiIKI2RlZmluZSBzcGVlZCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSAsIGNpbi50aWUoTlVMTCkgLCBjb3V0LnRpZShOVUxMKTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+ID5kPXsKICAgIHswLC0xfSx7MCwxfSx7MSwwfSx7LTEsMH0KfTsKdmVjdG9yPGNoYXI+ZGQ9eydMJywgJ1InICwgJ0QnICwgJ1UnfTsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBOID0gMTAwMTsKaW50IG1haW4oKSB7CiAgICBzcGVlZAogICAgUyBzOwogICAgICAgICB3aGlsZSAoZ2V0bGluZShjaW4gLCBzKSl7CiAgICAgICAgICAgICAgICBpZiAocy5zaXplKCkgPT0gMCkgYnJlYWs7CiAgICAgICAgICAgIGludCBtZW1bTl1bTl07CiAgICAgICAgIGZ1bmN0aW9uIDxpbnQoaW50ICwgaW50ICk+IGRwID1bJl0oaW50IGkgLCBpbnQgayktPmludCB7CiAgICAgICAgICAgICAgICAgIGlmICggayA8PSBpKXJldHVybiAwOwogICAgICAgICAgICAgICAgICBpbnQmcmVzPW1lbVtpXVtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzKXJldHVybiByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IDFlOTsKICAgICAgICAgICAgIGlmICggc1tpXSAhPSBzW2tdKSB7CiAgICAgICAgICAgICAgICAgY2hhciBjID0gc1trXTsKICAgICAgICAgICAgICAgICBzLmluc2VydChzLmJlZ2luKCkgKyBpICwgYyk7CiAgICAgICAgICAgICAgICAgcmVzID1taW4ocmVzLCBkcChpICsgMSAsIGspICsgMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHJlcyA9IGRwKCBpICsgMSAsIGsgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9OwoKICAgICAgICAgIG1lbXNldChtZW0gLCAtMSAsIHNpemVvZihtZW0pKTsKICBjb3V0IDw8ICAgZHAoMCAsIHMuc2l6ZSgpLTEgKSA8PCAiICI7CiAgICBjb3V0PDwgczw8bmw7fQogICAgcmV0dXJuIDA7Cn0=