#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=