#include <stdio.h>
#include <stdlib.h> // mallocとfreeを使うから、この道具箱が必要！

int main(void) {
    int i, size;
    char nyuryoku[1024]; // 入力された文字を入れるノート
    char *kaibun;        // 新しく作る回文を入れるための魔法の箱

    // 【1. 単語を読み込む】
    if (scanf("%s", nyuryoku) != 1) return -1;

    // 【2. 回文作成の心臓部】（関数をここに合体！）
    
    // ① 入力された文字の長さ（size）を数える
    for (size = 0; nyuryoku[size] != '\0'; size++);

    // ② 2倍の長さの新しいノートをパソコンの中に確保する
    // (元のサイズ × 2) + 終わりの合図('\0')の1マス分
    kaibun = (char *)malloc(sizeof(char) * (2 * size + 1));
    if (kaibun == NULL) {
        printf("ERROR\n");
        return -1;
    }

    // ③ 新しいノートの前半半分に、元の文字をそのままコピー
    for (i = 0; i < size; i++) {
        kaibun[i] = nyuryoku[i];
    }

    // ④ 新しいノートの後半半分に、後ろからひっくり返してコピー
    for (i = 0; i < size; i++) {
        kaibun[i + size] = nyuryoku[size - i - 1];
    }

    // 🛡️ ⑤ 新しいノートの一番お尻に、終わりの合図「\0」を書き込む！
    kaibun[2 * size] = '\0';

    // 【3. 結果発表】
    printf("%s\n  -> %s\n", nyuryoku, kaibun);

    // 【4. お片付け】
    free(kaibun); // mallocで作ったノートをゴミ箱に捨てる

    return 0;
}