#include <stdio.h>
#include <string.h>
char S[100001];
int next1[100001];
int next2[100001];
char TS[100001];
int found_next() {
int i = 0, j = -1, t = 0;
next1[0] = -1;
next2[0] = -1;
int m = strlen(S);
for (i = m - 1; i >= 0; i--) {
TS[t] = S[ i];
t++;
}
int max = 0, mid = 0, tmax = 0;
i = 0;
while (i < m - 1) {
if (j == -1 || TS[ i] == TS[j]) {
i++;
j++;
next1[ i] = j;
if (next1[ i] > max) {
max = next1[ i];
}
} else {
j = next1[j];
}
}
i = 0;
j = -1;
while (i < m - 1) {
if (j == -1 || S[ i] == S[j]) {
i++;
j++;
next2[ i] = j;
if (next2[ i] > tmax) {
tmax = next2[ i];
}
} else {
j = next2[j];
}
}
mid = next2[tmax];
if (mid < 0 || m - 2 * mid <= 0) {
mid = 0;
}
int X = max - mid + m;
return X;
}
int main() {
while (scanf("%s", S) != EOF) {
int n = 0;
n = found_next();
printf("%d\n", n);
}
return 0;
}