#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("omit-frame-pointer")
#pragma GCC optimize("unroll-loops")
const int MAXINT = 2147483640;
const long long MAXLL = 9223372036854775800LL;
const long long MAXN = 1000000;
const double eps = 1e-9;
const long long mod = 1e9 + 7;
using namespace std;
long long binpow(long long a, long long n) {
  long long ans = 1;
  while (n) {
    if (n & 1) ans *= a;
    a *= a;
    n >>= 1;
  }
  return ans;
}
string s;
long long f[5002][5003], i, j, ans;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  srand(time(0));
  cin >> s;
  for (i = 0; i < s.size(); ++i) {
    long long cbr = 0, obr = 0, q = 0;
    for (j = i; j < s.size(); ++j) {
      if (s[j] == '(') obr++;
      if (s[j] == ')') cbr++;
      if (s[j] == '?') q++;
      long long sum = q + cbr + obr;
      if (cbr > q + obr) break;
      if (max(obr, cbr) * 2 <= sum && sum % 2 == 0) {
        f[i][j] = 1;
      }
    }
    cbr = 0, obr = 0, q = 0;
    for (j = i; j >= 0; --j) {
      if (s[j] == '(') obr++;
      if (s[j] == ')') cbr++;
      if (s[j] == '?') q++;
      if (obr > q + cbr) break;
      long long sum = q + cbr + obr;
      if (max(obr, cbr) * 2 <= sum && sum % 2 == 0 && f[j][i]) {
        ans++;
      }
    }
  }
  cout << ans << "\n";
  return 0;
}
