#include <bits/stdc++.h>
using namespace std;
template <class t>
void _r(t &x) {
  cin >> x;
}
void _r(int &x) { scanf("%d", &x); }
void _r(int64_t &x) { scanf("%lld", &x); }
void _r(double &x) { scanf("%lf", &x); }
void _r(char &x) { scanf(" %c", &x); }
void _r(char *x) { scanf("%s", x); }
void r() {}
template <class t, class... u>
void r(t &head, u &...tail) {
  _r(head);
  r(tail...);
}
template <class t>
void _w(const t &x) {
  cout << x;
}
void _w(const int &x) { printf("%d", x); }
void _w(const int64_t &x) { printf("%lld", x); }
void _w(const double &x) { printf("%.16f", x); }
void _w(const char &x) { putchar(x); }
void _w(const char *x) { printf("%s", x); }
template <class t, class u>
void _w(const pair<t, u> &x) {
  _w(x.f);
  putchar(' ');
  _w(x.s);
}
void w() {}
template <class t, class... u>
void w(const t &head, const u &...tail) {
  _w(head);
  putchar(sizeof...(tail) ? ' ' : '\n');
  w(tail...);
}
template <class t, class... u>
void debug(const t &head, const u &...tail) {}
char s[5050];
int main() {
  r(s);
  int ans = 0;
  int n = strlen(s);
  for (int i = 0; i < (n); ++i) {
    int l = 0, r = 0;
    for (int j = (i); j < (n); ++j) {
      if (s[j] == '(')
        l++, r++;
      else if (s[j] == ')')
        l--, r--;
      else
        l--, r++;
      if (l < 0) l += 2;
      if (r < 0) break;
      if (l == 0) ans++;
    }
  }
  w(ans);
}
