#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <memory.h>
using namespace std;

char s[1000010];
int d1[1000010], d2[1000010];

int main() {
    scanf("%s", s);
    int n = strlen(s);
    int bestlen = 0, ai = 0, aj = 0, k = 0, l = 0, r = -1;
    
    for (int i = 0; i < n; i++){
        if (i > r) k = 1;
        else k = min(d1[l + r - i], r - i);

        while (0 <= i-k && i+k < n && s[i - k] == s[i + k]) k++;
        d1[i] = k;
        if (i + k - 1 > r)
        r = i + k - 1, l = i - k + 1;
        
        if (d1[i] * 2 - 1 > bestlen) {
            bestlen = d1[i] * 2 - 1;
            ai = i - d1[i] + 1;
            aj = i + d1[i] - 1;
        }
    }
    
    l = 0, r = -1, k = 0;
    for (int i = 0; i < n; i++) {
        if (i > r) k = 0;
        else k = min(d2[l + r - i + 1], r - i + 1);

        while (i + k < n && i - k - 1 >= 0 && s[i+k] == s[i - k - 1]) k++;
        d2[i] = k;

        if (i + k - 1 > r)
        l = i - k, r = i + k - 1;
        
        if (d2[i] * 2 > bestlen) {
            bestlen = d2[i] * 2;
            ai = i - d2[i];
            aj = i + d2[i] - 1;
        }
    }
    
    for (int i = ai; i <= aj; i++) putchar(s[i]);
    
    return 0;
}