#include <bits/stdc++.h>
using namespace std;
int main() {
  string S;
  cin >> S;
  int N = S.size();
  int64_t ans = 0;
  for (int D : {1, -1}) {
    vector<int> A(2 * N + 1);
    int s = N;
    A[N] = 1;
    for (int i = 0; i < N; i++) {
      int d = (S[i] == '(' ? 1 : -1);
      if (S[i] == '?') d = D;
      if (d == 1) {
        s++;
        A[s] = 1;
      } else {
        s--;
        ans += A[s];
        A[s]++;
      }
    }
  }
  {
    vector<int> A(2 * N + 1);
    int s = N;
    A[N] = 1;
    for (int i = 0; i < N; i++) {
      if (S[i] == '?') {
        fill(A.begin(), A.end(), 0);
        A[s] = 1;
        continue;
      }
      int d = (S[i] == '(' ? 1 : -1);
      if (d == 1) {
        s++;
        A[s] = 1;
      } else {
        s--;
        ans -= A[s];
        A[s]++;
      }
    }
  }
  int prv = -1;
  for (int k = 0; k < N; k++) {
    if (S[k] == '?') {
      if (prv >= 0) {
        vector<int> A(2 * N + 1);
        int s = N;
        A[N] = 1;
        for (int i = 0; i < N; i++) {
          int d = (S[i] == '(' ? 1 : -1);
          if (S[i] == '?') d = (i <= prv ? 1 : -1);
          if (d == 1) {
            s++;
            A[s] = 0;
            if (i < prv) A[s]++;
          } else {
            s--;
            if (i < prv) A[s]++;
            if (i >= k) ans += A[s];
          }
        }
      }
      prv = k;
    }
  }
  cout << ans << endl;
  return 0;
}
