#include <bits/stdc++.h>
using namespace std;
char S[5005];
int Min[5005][5005], Min2[5005][5005];
int ans, Aux[5005], Partial[5005];
int N;
void precalcMin() {
  for (int i = 1; i <= N; i++) {
    int cnt = 0, cnt2 = 0;
    for (int j = i; j <= N; j++) {
      if (S[j] == '?' || S[j] == ')')
        --cnt;
      else
        ++cnt;
      if (S[j] == '?' || S[j] == '(')
        ++cnt2;
      else
        --cnt2;
      if (j == i)
        Min[i][j] = cnt, Min2[i][j] = cnt2;
      else
        Min[i][j] = min(Min[i][j - 1], cnt),
        Min2[i][j] = min(Min2[i][j - 1], cnt2);
    }
  }
}
void Solve(int pos) {
  int ind = 0;
  int rem = pos % 2, r = rem, sum = 0;
  Aux[0] = pos - 1;
  for (int i = pos; i <= N; i++, rem = 1 - rem) {
    if (S[i] == '?') Aux[++ind] = i;
    if (S[i] == '(') sum++;
    if (S[i] == ')') sum--;
    if (ind == 0) {
      if (sum < 0) return;
      if (sum == 0) ans++;
    }
    if (rem == r || ind == 0) continue;
    int nbp = (ind - sum) / 2;
    int nbm = ind - nbp;
    if (nbp < 0 || nbm < 0) continue;
    if (Min2[pos][Aux[nbp]] >= 0 &&
        Min[Aux[nbp] + 1][i] + nbp + Partial[Aux[nbp]] - Partial[pos - 1] >= 0)
      ans++;
  }
}
int main() {
  cin.getline(S + 1, 5005);
  N = strlen(S + 1);
  for (int i = 1; i <= N; i++) {
    Partial[i] = Partial[i - 1];
    if (S[i] == '?') continue;
    if (S[i] == '(')
      ++Partial[i];
    else
      --Partial[i];
  }
  precalcMin();
  for (int i = 1; i <= N; i++) Solve(i);
  cout << ans << "\n";
  return 0;
}
