const fs = require("fs");
const s = fs.readFileSync(0, "utf8").trim();
const n = s.length;
const balance = new Array(n + 1).fill(0);
for (let i = 0; i < n; i++) {
balance[i + 1] = balance[i] + (s[i] === "(" ? 1 : -1);
}
const total = balance[n];
const minPrefix = new Array(n + 1);
minPrefix[0] = balance[0];
for (let i = 1; i <= n; i++) {
minPrefix[i] = Math.min(minPrefix[i - 1], balance[i]);
}
const minSuffix = new Array(n + 1);
minSuffix[n] = balance[n];
for (let i = n - 1; i >= 0; i--) {
minSuffix[i] = Math.min(minSuffix[i + 1], balance[i]);
}
let ans = 0;
for (let i = 0; i < n; i++) {
if (minPrefix[i] < 0) continue;
if (s[i] === "(") {
if (total === 2 && minSuffix[i + 1] - 2 >= 0) ans++;
} else {
if (total === -2 && minSuffix[i + 1] + 2 >= 0) ans++;
}
}
console.log(ans);
Y29uc3QgZnMgPSByZXF1aXJlKCJmcyIpOwoKY29uc3QgcyA9IGZzLnJlYWRGaWxlU3luYygwLCAidXRmOCIpLnRyaW0oKTsKY29uc3QgbiA9IHMubGVuZ3RoOwoKY29uc3QgYmFsYW5jZSA9IG5ldyBBcnJheShuICsgMSkuZmlsbCgwKTsKZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICBiYWxhbmNlW2kgKyAxXSA9IGJhbGFuY2VbaV0gKyAoc1tpXSA9PT0gIigiID8gMSA6IC0xKTsKfQoKY29uc3QgdG90YWwgPSBiYWxhbmNlW25dOwoKY29uc3QgbWluUHJlZml4ID0gbmV3IEFycmF5KG4gKyAxKTsKbWluUHJlZml4WzBdID0gYmFsYW5jZVswXTsKZm9yIChsZXQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgbWluUHJlZml4W2ldID0gTWF0aC5taW4obWluUHJlZml4W2kgLSAxXSwgYmFsYW5jZVtpXSk7Cn0KCmNvbnN0IG1pblN1ZmZpeCA9IG5ldyBBcnJheShuICsgMSk7Cm1pblN1ZmZpeFtuXSA9IGJhbGFuY2Vbbl07CmZvciAobGV0IGkgPSBuIC0gMTsgaSA+PSAwOyBpLS0pIHsKICBtaW5TdWZmaXhbaV0gPSBNYXRoLm1pbihtaW5TdWZmaXhbaSArIDFdLCBiYWxhbmNlW2ldKTsKfQoKbGV0IGFucyA9IDA7Cgpmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykgewogIGlmIChtaW5QcmVmaXhbaV0gPCAwKSBjb250aW51ZTsKCiAgaWYgKHNbaV0gPT09ICIoIikgewogICAgaWYgKHRvdGFsID09PSAyICYmIG1pblN1ZmZpeFtpICsgMV0gLSAyID49IDApIGFucysrOwogIH0gZWxzZSB7CiAgICBpZiAodG90YWwgPT09IC0yICYmIG1pblN1ZmZpeFtpICsgMV0gKyAyID49IDApIGFucysrOwogIH0KfQoKY29uc29sZS5sb2coYW5zKTsK