#include <iostream>
#include <stack>
int countSentences(const std::string& input)
{
int len = static_cast<int>(input.length());
int countValidSentences = 0;
int countInvalidSentences = 0;
std::stack<char> leftParenthesis;
for(int i = 0; i < len; i++)
{
if(input[i] == '(')
{
leftParenthesis.push(input[i]);
}
else if(input[i] == ')')
{
if(leftParenthesis.empty() || leftParenthesis.top() != '(')
{
countInvalidSentences++;
}
else
{
leftParenthesis.pop();
countValidSentences++;
}
}
}
countInvalidSentences += leftParenthesis.size();
int calculateValidSentencesFromInvalid = countInvalidSentences / 2;
return countValidSentences + calculateValidSentencesFromInvalid;
}
int main()
{
std::string input;
std::cin >> input;
int ret = countSentences(input);
std::cout << ret;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CgppbnQgY291bnRTZW50ZW5jZXMoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0KQp7CiAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihpbnB1dC5sZW5ndGgoKSk7CiAgICBpbnQgY291bnRWYWxpZFNlbnRlbmNlcyA9IDA7CiAgICBpbnQgY291bnRJbnZhbGlkU2VudGVuY2VzID0gMDsKICAgIAogICAgc3RkOjpzdGFjazxjaGFyPiBsZWZ0UGFyZW50aGVzaXM7CiAgICAKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgCiAgICB7CiAgICAgICAgaWYoaW5wdXRbaV0gPT0gJygnKSAKICAgICAgICB7CiAgICAgICAgICAgIGxlZnRQYXJlbnRoZXNpcy5wdXNoKGlucHV0W2ldKTsKICAgICAgICB9IAogICAgICAgIGVsc2UgaWYoaW5wdXRbaV0gPT0gJyknKSAKICAgICAgICB7CiAgICAgICAgICAgIGlmKGxlZnRQYXJlbnRoZXNpcy5lbXB0eSgpIHx8IGxlZnRQYXJlbnRoZXNpcy50b3AoKSAhPSAnKCcpIAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3VudEludmFsaWRTZW50ZW5jZXMrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxlZnRQYXJlbnRoZXNpcy5wb3AoKTsKICAgICAgICAgICAgICAgIGNvdW50VmFsaWRTZW50ZW5jZXMrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgY291bnRJbnZhbGlkU2VudGVuY2VzICs9IGxlZnRQYXJlbnRoZXNpcy5zaXplKCk7CiAgICBpbnQgY2FsY3VsYXRlVmFsaWRTZW50ZW5jZXNGcm9tSW52YWxpZCA9IGNvdW50SW52YWxpZFNlbnRlbmNlcyAvIDI7CiAgICAKICAgIHJldHVybiBjb3VudFZhbGlkU2VudGVuY2VzICsgY2FsY3VsYXRlVmFsaWRTZW50ZW5jZXNGcm9tSW52YWxpZDsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnN0cmluZyBpbnB1dDsKICAgIHN0ZDo6Y2luID4+IGlucHV0OwogICAgCiAgICBpbnQgcmV0ID0gY291bnRTZW50ZW5jZXMoaW5wdXQpOwogICAgc3RkOjpjb3V0IDw8IHJldDsKICAgIHJldHVybiAwOwp9