#include <stdio.h>
#include <string.h>
int main(){
int a[100000], b[100000], h[100000], k[100000],  x[100000]=0, y[100000]=0, w[100000], q[100000]=1, u[100000]=1, c, d, e,f ,g=0, i, t=0, r=0;
char z[100000];
gets(z);
c=strlen(z);          /*c는 문자갯수*/

for(e=0;e<c;e++){
for(d=0;d<=e;d++){
if(z[d]=='(') a[e]++;
     /*a[e]는 z[0]부터 z[e]까지 들어있는 '('의 갯수*/
b[e]=e+1-a[e]; 
}

      /*b[e]는 z[0]부터 z[e]까지 들어있는 ')'의 갯수*/
for(d=(e+1);d<=(c-1);d++){
if(z[d]=='(') h[e]++;
}
     /*h[e]는 z[e+1]부터 z[c-1]까지 들어있는 '('의 갯수*/
k[e]=c-e-1-h[e];     /*k[e]는 z[e+1]부터 z[c-1]까지 들어있는 ')'의 갯수*/
}
for(e=0;e<c;e++){
if(z[e]=='('){
for(p=0;p<e;p++){
if(a[p]-b[p]>=0&&k[p]-h[p]+2>=0&&a[p]-b[p]==k[p]-h[p]+2){
q[p]=0;
}
}
for(p=e;p<c;p++){
if(a[p]-b[p]-2>=0&&k[p]-h[p]>=0&&a[p]-b[p]-2==k[p]-h[p]){
q[p]=0;
}
}
for(p=0;p<c;p++){
r=r+q[p];
}
if(r==0) x[e]=1;
}
}
    /*어느 e에대해 그에 위치한 괄호가 (일때 그걸 역으로 바꿨을때 그게 완전한문양이면 x[e]변수에 1을 저장*/

for(e=0;e<c;e++){
if(z[e]==')'){
for(p=0;p<e;p++){
if(a[p]-b[p]>=0&&k[p]-h[p]-2>=0&&a[p]-b[p]==k[p]-h[p]-2){
u[p]=0;
}
}
for(p=e;p<c;p++){
if(a[p]-b[p]+2>=0&&k[p]-h[p]>=0&&a[p]-b[p]+2==k[p]-h[p]){
u[p]=0;
}
}
for(p=0;p<c;p++){
t=t+u[p];
}
if(t==0) y[e]=1;
}
}    /*어느 e에대해 그에 위치한 괄호가 )일때 그걸 역으로 바꿨을때 그게 완전한문양이면 y[e]변수에 1을 저장*/

for(e=0;e<c;e++){
w[e]=x[e]+y[e];
}

for(e=0;e<c;e++){

g=g+w[e];
}
printf("%d",g);
return 0;
}


어디가 틀린건지 아무리 봐도 안보이네;;