#include <stdio.h>
#include <stdlib.h>

int myStrlen(char s[]){
    int i;
    for(i=0;s[i]!='\0';i++);
    return i;
}

int hantei(char tmp[]){
	int n,medi;
	n=myStrlen(tmp);
	if(n%2==1){
		medi=(n/2)+1;
	}else{
		medi=(n/2);
	}
	
	for(int i=0;i<medi;i++){
		if(tmp[i]!=tmp[n-1-i]){
			return 0;
		}
	}
	return 1;
}
char *zurashi(char tmp[], int count, int n){
	
	if(count==-1){
		return tmp;
	}
	else{
		tmp[n+count]=tmp[n+count-1];
		return zurashi(tmp,count-1,n);
	}
}

char *setPalindrome(char s[]){
	char *tmp;
	int m,n,i,count=-1;
	n=myStrlen(s);
	m=2*n;
	tmp=(char *)malloc(sizeof(char )*m);
	for(i=0;i<n;i++){
		tmp[i]=s[i];
	}
	while(hantei(tmp)==0){
		count++;
		zurashi(tmp,count,n);
		tmp[n]=s[count];
	}
	printf("増やした文字数 : %d文字",count+1);
	return tmp;
}


//メイン関数はいじる必要はありません
int main(){
    int i;
    char nyuryoku[1024]; //入力
    char *kaibun;   //回文を受け取る
    scanf("%s",nyuryoku);
    kaibun = setPalindrome(nyuryoku);
    printf("%s  -> %s\n",nyuryoku,kaibun);
    free(kaibun);
    return 0;
}
