// // Created by cteam012 on 12/1/19. // #include #include #include #include using namespace std; #define f(i,a,b) for(int i = (a); i < (b);++i) #define b(i,a,b) for(int i = (a); i >= (b);--i) vector> occs; int main() { ios_base::sync_with_stdio(0); f(i,0,26) { occs.push_back(vector()); } int size; cin >> size; string s; cin >> s; f(i,0,size) { occs[s[i]-'a'].push_back(i); } f(i,0,26) { sort(occs[i].begin(), occs[i].end()); } vector letterptrs; f(i,0,26) { letterptrs.push_back(occs[i].size() - 1); } int lastletter = s[s.length()-1] - 'a'; int position = size - 1; int longest = 0; bool correct = true; while(position >= 0) { correct = true; b(i, size -1, (size + position)/2) { if(s[i] != s[size - 1 + position - i]) { correct = false; letterptrs[lastletter]--; if(letterptrs[lastletter] == -1) { position = -1; } else { position = occs[lastletter][letterptrs[lastletter]]; } break; } } if(correct) { longest = size - position; letterptrs[lastletter]--; if(letterptrs[lastletter] == -1) { position = -1; } else { position = occs[lastletter][letterptrs[lastletter]]; } } } cout << size - longest; return 0; }