#include<iostream>
#include<stack>
#include<string>
#include<algorithm> 
using namespace std;

int main() {
	string s;
	cin >> s;
	size_t ans = 0;
	stack<char> stack;
	for (int i = 0; i < s.size(); i++) {
		char c = s[i];
		if (c == '(') {
			stack.push(c);
			ans = max(stack.size(), ans);
		}
		else if (!stack.empty() && stack.top() == '(') stack.pop();
	}
	cout << ans; 
}

//直接用stack,感觉dfs(n, k)也是类似于栈