#include <cstring>
#include <cstdio>
using namespace std;
const int base = 13331, Q1 = 1000000007, Q2 = 1000000009;
int hash1[1000001], hash2[1000001], power1[1000001], power2[1000001];
char str[1000001];
bool check(int a, int b, int l) {
int t1 = ((hash1[a+l] - (long long)hash1[a] * power1[l]) % Q1 + Q1) % Q1;
int t2 = ((hash1[b+l] - (long long)hash1[b] * power1[l]) % Q1 + Q1) % Q1;
if (t1 != t2) return false;
int t3 = ((hash2[a+l] - (long long)hash2[a] * power2[l]) % Q2 + Q2) % Q2;
int t4 = ((hash2[b+l] - (long long)hash2[b] * power2[l]) % Q2 + Q2) % Q2;
if (t3 != t4) return false;
return true;
}
int main() {
int n;
scanf("%d%s", &n, str);
hash1[0] = hash2[0] = 0;
for (int i = 0; i < n; i ++) {
hash1[i+1] = ((long long)hash1[i] * base + str[i]) % Q1;
hash2[i+1] = ((long long)hash2[i] * base + str[i]) % Q2;
}
power1[0] = power2[0] = 1;
for (int i = 1; i <= n; i ++) {
power1[i] = (long long)power1[i-1] * base % Q1;
power2[i] = (long long)power2[i-1] * base % Q2;
}
int ans = 0;
for (int i = n / 2 - 1, j = 0; i >= 0; i --) {
j += 2;
while (j >= 0 && (i + j > n / 2 || ! check(i, n - i - j, j))) j --;
if (check(0, n - i, i) && i + j > ans) ans = i + j;
}
printf("%d\n", ans);
return 0;
}
CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8Y3N0ZGlvPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBiYXNlID0gMTMzMzEsIFExID0gMTAwMDAwMDAwNywgUTIgPSAxMDAwMDAwMDA5OwoKaW50IGhhc2gxWzEwMDAwMDFdLCBoYXNoMlsxMDAwMDAxXSwgcG93ZXIxWzEwMDAwMDFdLCBwb3dlcjJbMTAwMDAwMV07CmNoYXIgc3RyWzEwMDAwMDFdOwoKYm9vbCBjaGVjayhpbnQgYSwgaW50IGIsIGludCBsKSB7CglpbnQgdDEgPSAoKGhhc2gxW2ErbF0gLSAobG9uZyBsb25nKWhhc2gxW2FdICogcG93ZXIxW2xdKSAlIFExICsgUTEpICUgUTE7CglpbnQgdDIgPSAoKGhhc2gxW2IrbF0gLSAobG9uZyBsb25nKWhhc2gxW2JdICogcG93ZXIxW2xdKSAlIFExICsgUTEpICUgUTE7CglpZiAodDEgIT0gdDIpIHJldHVybiBmYWxzZTsKCWludCB0MyA9ICgoaGFzaDJbYStsXSAtIChsb25nIGxvbmcpaGFzaDJbYV0gKiBwb3dlcjJbbF0pICUgUTIgKyBRMikgJSBRMjsKCWludCB0NCA9ICgoaGFzaDJbYitsXSAtIChsb25nIGxvbmcpaGFzaDJbYl0gKiBwb3dlcjJbbF0pICUgUTIgKyBRMikgJSBRMjsKCWlmICh0MyAhPSB0NCkgcmV0dXJuIGZhbHNlOwoJcmV0dXJuIHRydWU7Cn0KCmludCBtYWluKCkgewoJaW50IG47CglzY2FuZigiJWQlcyIsICZuLCBzdHIpOwoJaGFzaDFbMF0gPSBoYXNoMlswXSA9IDA7Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkgKyspIHsKCQloYXNoMVtpKzFdID0gKChsb25nIGxvbmcpaGFzaDFbaV0gKiBiYXNlICsgc3RyW2ldKSAlIFExOwoJCWhhc2gyW2krMV0gPSAoKGxvbmcgbG9uZyloYXNoMltpXSAqIGJhc2UgKyBzdHJbaV0pICUgUTI7Cgl9Cglwb3dlcjFbMF0gPSBwb3dlcjJbMF0gPSAxOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSArKykgewoJCXBvd2VyMVtpXSA9IChsb25nIGxvbmcpcG93ZXIxW2ktMV0gKiBiYXNlICUgUTE7CgkJcG93ZXIyW2ldID0gKGxvbmcgbG9uZylwb3dlcjJbaS0xXSAqIGJhc2UgJSBRMjsKCX0KCQoJaW50IGFucyA9IDA7Cglmb3IgKGludCBpID0gbiAvIDIgLSAxLCBqID0gMDsgaSA+PSAwOyBpIC0tKSB7CgkJaiArPSAyOwoJCXdoaWxlIChqID49IDAgJiYgKGkgKyBqID4gbiAvIDIgfHwgISBjaGVjayhpLCBuIC0gaSAtIGosIGopKSkgaiAtLTsKCQlpZiAoY2hlY2soMCwgbiAtIGksIGkpICYmIGkgKyBqID4gYW5zKSBhbnMgPSBpICsgajsKCX0KCXByaW50ZigiJWRcbiIsIGFucyk7CgkKCXJldHVybiAwOwp9Cg==