#include <bits/stdc++.h>
using namespace std;
long long mod = 998244353;
string s;
long long DP[2001][2001][3];
long long sum[2001];
long long p(int i, int j) {
  if (i > j) return 1;
  long long y = sum[j] - (i == 0 ? 0 : sum[i - 1]);
  long long x = 2;
  long long res = 1;
  while (y > 0) {
    if (y & 1) res = res * x;
    y = y >> 1;
    x = x * x;
    x %= mod;
    res %= mod;
  }
  return res;
}
long long dp(int i, int j, int ignorar) {
  if (i >= j) return 0;
  if (DP[i][j][ignorar] != -1) return DP[i][j][ignorar];
  long long ans = 0;
  char q, w;
  q = s[i];
  w = s[j];
  if (ignorar & 1) w = ')';
  if (ignorar & 2) q = '(';
  if (q == '(') {
    if (w == ')') {
      ans = p(i + 1, j - 1) + dp(i + 1, j - 1, 0);
    }
    if (w == '(') {
      ans = dp(i, j - 1, ignorar);
    }
    if (w == '?') {
      ans = p(i + 1, j - 1) + dp(i + 1, j - 1, 0) + dp(i, j - 1, ignorar);
    }
  }
  if (q == ')') {
    ans = dp(i + 1, j, ignorar);
  }
  if (q == '?') {
    if (w == ')') {
      ans = p(i + 1, j - 1) + dp(i + 1, j - 1, 0) + dp(i + 1, j, ignorar);
    }
    if (w == '(') {
      ans = dp(i, j - 1, ignorar);
    }
    if (w == '?') {
      ans = p(i + 1, j - 1) + 2 * dp(i + 1, j - 1, 0) + dp(i, j - 1, 2) +
            dp(i + 1, j, 1);
    }
  }
  return DP[i][j][ignorar] = ans % mod;
}
int main() {
  cin >> s;
  memset(DP, -1, sizeof(DP));
  memset(sum, 0, sizeof(sum));
  if (s[0] == '?') sum[0] = 1;
  for (int i = 1; i < s.size(); i++) {
    if (s[i] == '?') sum[i] = 1;
    sum[i] += sum[i - 1];
  }
  cout << dp(0, s.size() - 1, 0) << endl;
  ;
  return 0;
}
