#include <bits/stdc++.h>
using namespace std;
// Function to return the maximum number
// of given operations required to
// remove the given string entirely
int find(string s)
{
// If length of the string is zero
if (s.length() == 0)
return 0;
// Single operation can delete the entire string
int c = 1;
// To store the prefix of the string
// which is to be deleted
string d = "";
for (int i = 0; i < s.length(); i++) {
// Prefix s[0..i]
d += s[i];
// To store the substring s[i+1...2*i+1]
string s2 = s.substr(i + 1, d.length());
// If the prefix s[0...i] can be deleted
if (s2 == d) {
// 1 operation to remove the current prefix
// and then recursively find the count of
// operations for the substring s[i+1...n-1]
c = 1 + find(s.substr(i + 1));
break;
}
}
// Entire string has to be deleted
return c;
}
// Driver code
int main()
{
string s = "aaaaaabbaabbaabbaabb";
cout << find(s);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKICAKLy8gRnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciAKLy8gb2YgZ2l2ZW4gb3BlcmF0aW9ucyByZXF1aXJlZCB0byAKLy8gcmVtb3ZlIHRoZSBnaXZlbiBzdHJpbmcgZW50aXJlbHkgCmludCBmaW5kKHN0cmluZyBzKSAKeyAKICAKICAgIC8vIElmIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIHplcm8gCiAgICBpZiAocy5sZW5ndGgoKSA9PSAwKSAKICAgICAgICByZXR1cm4gMDsgCiAgCiAgICAvLyBTaW5nbGUgb3BlcmF0aW9uIGNhbiBkZWxldGUgdGhlIGVudGlyZSBzdHJpbmcgCiAgICBpbnQgYyA9IDE7IAogIAogICAgLy8gVG8gc3RvcmUgdGhlIHByZWZpeCBvZiB0aGUgc3RyaW5nIAogICAgLy8gd2hpY2ggaXMgdG8gYmUgZGVsZXRlZCAKICAgIHN0cmluZyBkID0gIiI7IAogIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsgCiAgCiAgICAgICAgLy8gUHJlZml4IHNbMC4uaV0gCiAgICAgICAgZCArPSBzW2ldOyAKICAKICAgICAgICAvLyBUbyBzdG9yZSB0aGUgc3Vic3RyaW5nIHNbaSsxLi4uMippKzFdIAogICAgICAgIHN0cmluZyBzMiA9IHMuc3Vic3RyKGkgKyAxLCBkLmxlbmd0aCgpKTsgCiAgCiAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBzWzAuLi5pXSBjYW4gYmUgZGVsZXRlZCAKICAgICAgICBpZiAoczIgPT0gZCkgeyAKICAKICAgICAgICAgICAgLy8gMSBvcGVyYXRpb24gdG8gcmVtb3ZlIHRoZSBjdXJyZW50IHByZWZpeCAKICAgICAgICAgICAgLy8gYW5kIHRoZW4gcmVjdXJzaXZlbHkgZmluZCB0aGUgY291bnQgb2YgCiAgICAgICAgICAgIC8vIG9wZXJhdGlvbnMgZm9yIHRoZSBzdWJzdHJpbmcgc1tpKzEuLi5uLTFdIAogICAgICAgICAgICBjID0gMSArIGZpbmQocy5zdWJzdHIoaSArIDEpKTsgCiAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICB9IAogICAgfSAKICAKICAgIC8vIEVudGlyZSBzdHJpbmcgaGFzIHRvIGJlIGRlbGV0ZWQgCiAgICByZXR1cm4gYzsgCn0gCiAgCi8vIERyaXZlciBjb2RlIAppbnQgbWFpbigpIAp7IAogICAgc3RyaW5nIHMgPSAiYWFhYWFhYmJhYWJiYWFiYmFhYmIiOyAKICAKICAgIGNvdXQgPDwgZmluZChzKTsgCiAgCiAgICByZXR1cm4gMDsgCn0g