#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

void solve() {
	string s; cin >> s;
	int n = s.length();
	string d = "_"; 
	for (int i = 0; i < n; ++i) {
		d += s[i];
		d += "_";
	}
	
	n = d.length();

	vector<int> D(n);

	int l = 0;
	int r = -1;

	for (int i=0; i < n; ++i) {
		int k = 0;
		if (i <= r) 
			k = min(D[l + r - i], r - i) + 1;

		while (true)  
			if (k <= i && i + k < n && d[i+k] == d[i-k])
				++k;
			else
				break;

		--k;

		D[i] = k;

		if (r < k + i) {
			r = i + k;
			l = i - k;
		}
	}

	int p = 0;
	for (int i = 0; i < n; ++i) {
		//cout << D[i] << ' ';
		if (D[i] > D[p]) p = i;
	}
	//cout << endl;

	for (int j = p - D[p]; j <= p + D[p]; ++j) {
		if (d[j] != '_') cout << d[j];
	}
	cout << endl;
}

int main() {
	solve();
	return 0;
}