'use strict';
process.stdin.resume();
process.stdin.setEncoding('utf8');
var remainder = '';
var inputLines = [];
// Đọc input theo từng chunk và gom lại thành các dòng.
process.stdin.on('data', function(chunk) {
var lines = chunk.toString().split('\n');
// Ghép phần dư từ chunk trước (nếu có)
lines[0] = remainder + lines[0];
remainder = lines.pop();
inputLines = inputLines.concat(lines);
});
process.stdin.on('end', function() {
if (remainder) {
inputLines.push(remainder);
}
// Giả sử input nằm ở dòng đầu tiên
if (inputLines.length > 0) {
var s = inputLines[0].trim();
var result = computeAnswer(s);
process.stdout.write(result.toString() + "\n");
}
});
function computeAnswer(s) {
var n = s.length;
var P = new Array(n + 1);
P[0] = 0;
for (var i = 0; i < n; i++) {
if (s.charAt(i) === '(') {
P[i + 1] = P[i] + 1;
} else {
P[i + 1] = P[i] - 1;
}
}
var diff = P[n];
if (diff !== 2 && diff !== -2) {
return 0;
}
var minPref = new Array(n + 1);
minPref[0] = P[0];
for (var i = 1; i <= n; i++) {
minPref[i] = Math.min(minPref[i - 1], P[i]);
}
var minSuff = new Array(n + 1);
minSuff[n] = P[n];
for (var i = n - 1; i >= 0; i--) {
minSuff[i] = Math.min(P[i], minSuff[i + 1]);
}
var count = 0;
if (diff === -2) {
for (var i = 0; i < n; i++) {
if (s.charAt(i) === ')') {
if (minPref[i] >= 0 && minSuff[i + 1] >= -2) {
count++;
}
}
}
// Đảo '(' thành ')'
for (var i = 0; i < n; i++) {
if (s.charAt(i) === '(') {
if (minPref[i] >= 0 && minSuff[i + 1] >= 2) {
count++;
}
}
}
}
return count;
}