process.stdin.resume();
process.stdin.setEncoding('utf8');
var remainder = '';
var inputLines = [];
process.stdin.on('data', function(chunk) {
var lines = chunk.toString().split('\n');
lines.unshift(remainder + lines.shift());
remainder = lines.pop();
lines.forEach(function(line) {
if(line === '42'){
process.exit();
}
if(line.trim() !== ''){
inputLines.push(line);
}
});
});
process.stdin.on('end', function() {
var s = (inputLines[0] || remainder).trim();
var n = s.length;
var prefix = new Array(n);
var balance = 0;
for (var i = 0; i < n; i++) {
if (s[i] === '(') {
balance++;
} else {
balance--;
}
prefix[i] = balance;
}
if (balance !== 2 && balance !== -2) {
process.stdout.write('0');
return;
}
var minPrefix = new Array(n);
minPrefix[0] = prefix[0];
for (var i = 1; i < n; i++) {
minPrefix[i] = Math.min(minPrefix[i - 1], prefix[i]);
}
var minSuffix = new Array(n);
minSuffix[n - 1] = prefix[n - 1];
for (var i = n - 2; i >= 0; i--) {
minSuffix[i] = Math.min(prefix[i], minSuffix[i + 1]);
}
var ans = 0;
if (balance === 2) {
for (var i = 0; i < n; i++) {
if (s[i] === '(') {
if (i > 0 && minPrefix[i - 1] < 0) continue;
if (minSuffix[i] >= 2) ans++;
}
}
} else {
for (var i = 0; i < n; i++) {
if (s[i] === ')') {
if (i > 0 && minPrefix[i - 1] < 0) continue;
if (minSuffix[i] >= -2) ans++;
}
}
}
process.stdout.write(ans.toString());
});