#include <bits/stdc++.h>
using namespace std;
bool debug = false;
int l[5005], r[5005], q[5005];
bool c1[5005][5005], c2[5005][5005];
int s1[5005][5005], s2[5005][5005];
bool ok(int start, int end) {
  cout << "Checking from" << start << " to " << end << endl;
  for (int i = start; i <= end; i++) {
    cout << c1[i][start] << " " << c2[i][end] << endl;
    if (c1[i][start] == false) return false;
    if (c2[i][end] == false) return false;
  }
  return true;
}
int main(int argc, char* argv[]) {
  string s;
  cin >> s;
  l[0] = (s[0] == '(');
  r[0] = (s[0] == ')');
  q[0] = (s[0] == '?');
  for (int i = 1; i < s.size(); i++) {
    l[i] = l[i - 1] + (s[i] == '(');
    r[i] = r[i - 1] + (s[i] == ')');
    q[i] = q[i - 1] + (s[i] == '?');
  }
  for (int i = 0; i < s.size(); i++) {
    for (int j = 0; j <= i; j++) {
      int lc = l[i] - (j == 0 ? 0 : l[j - 1]);
      int rc = r[i] - (j == 0 ? 0 : r[j - 1]);
      int qc = q[i] - (j == 0 ? 0 : q[j - 1]);
      if (debug)
        cout << "c1:" << i << " " << j << " lc,rc,qc=" << lc << " " << rc << " "
             << qc << " so=" << lc + qc - rc << endl;
      if (lc + qc - rc >= 0) {
        c1[i][j] = true;
      }
    }
  }
  if (debug) cout << endl;
  for (int i = 0; i < s.size(); i++) {
    for (int j = i; j < s.size(); j++) {
      int lc = l[j] - (i == 0 ? 0 : l[i - 1]);
      int rc = r[j] - (i == 0 ? 0 : r[i - 1]);
      int qc = q[j] - (i == 0 ? 0 : q[i - 1]);
      if (debug)
        cout << "c2:" << i << " " << j << " lc,rc,qc=" << lc << " " << rc << " "
             << qc << " so=" << rc + qc - lc << endl;
      if (rc + qc - lc >= 0) {
        c2[i][j] = true;
      }
    }
  }
  if (debug) {
    for (int i = 0; i < s.size(); i++) {
      for (int j = 0; j < s.size(); j++) {
        cout << c1[i][j];
      }
      cout << endl;
    }
    cout << endl;
    for (int i = 0; i < s.size(); i++) {
      for (int j = 0; j < s.size(); j++) {
        cout << c2[i][j];
      }
      cout << endl;
    }
  }
  for (int i = 0; i < s.size(); i++) {
    s1[i][0] = c1[0][i];
    for (int j = 1; j < s.size(); j++) {
      s1[i][j] = s1[i][j - 1] + c1[j][i];
    }
  }
  for (int i = 0; i < s.size(); i++) {
    s2[i][0] = c2[0][i];
    for (int j = 1; j < s.size(); j++) {
      s2[i][j] = s2[i][j - 1] + c2[j][i];
    }
  }
  if (debug) {
    for (int i = 0; i < s.size(); i++) {
      cout << "Start at:" << i << endl;
      for (int j = 0; j < s.size(); j++) {
        cout << s1[i][j] << " ";
      }
      cout << endl;
    }
    for (int i = 0; i < s.size(); i++) {
      cout << "End at:" << i << endl;
      for (int j = 0; j < s.size(); j++) {
        cout << s2[i][j] << " ";
      }
      cout << endl;
    }
  }
  int cnt = 0;
  for (int i = 0; i < s.size(); i++) {
    for (int j = i; j < s.size(); j++) {
      if ((j - i + 1) % 2 == 0) {
        int cf1 = s1[i][j] - (i == 0 ? 0 : s1[i][i - 1]);
        int cf2 = s2[j][j] - (i == 0 ? 0 : s2[j][i - 1]);
        if (cf1 == j - i + 1 && cf2 == j - i + 1) {
          cnt++;
          if (debug) cout << s.substr(i, j - i + 1) << endl;
        }
      }
    }
  }
  cout << cnt;
  return 0;
}
