#include <bits/stdc++.h>
using namespace std;
char a[705];
int n, dp[705][705][3][3], inc[705], st[705];
inline void Stiva() {
  int top = 1, i;
  st[1] = n;
  for (i = n - 1; i; --i)
    if (a[i] == ')')
      st[++top] = i;
    else
      inc[st[top--]] = i;
}
int main() {
  int i, j, sol = 0, k, t, q, val;
  cin.sync_with_stdio(0);
  cin >> (a + 1);
  n = strlen(a + 1);
  Stiva();
  for (i = 1; i <= n; ++i) dp[i][i][0][0] = dp[i][i][1][1] = dp[i][i][2][2] = 1;
  for (i = 1; i < n; ++i) {
    if (inc[i + 1] == i) {
      for (q = 1; q < 3; ++q) dp[i][i + 1][0][q] = dp[i][i + 1][q][0] = 1;
    } else {
      for (j = 0; j < 3; ++j)
        for (k = 0; k < 3; ++k)
          if (!j || !k || j != k) dp[i][i + 1][j][k] = 1;
    }
  }
  for (j = 3; j <= n; ++j)
    for (i = j - 2; i; --i) {
      if (a[j] == '(' || inc[j] < i) {
        for (k = 0; k < 3; ++k) {
          dp[i][j][k][0] = (1LL * dp[i][j - 1][k][0] + dp[i][j - 1][k][1] +
                            dp[i][j - 1][k][2]) %
                           1000000007;
          dp[i][j][k][1] =
              (1LL * dp[i][j - 1][k][0] + dp[i][j - 1][k][2]) % 1000000007;
          dp[i][j][k][2] =
              (1LL * dp[i][j - 1][k][0] + dp[i][j - 1][k][1]) % 1000000007;
        }
      } else {
        t = inc[j];
        for (k = 0; k < 3; ++k) {
          for (q = 1; q < 3; ++q) {
            val = (1LL * dp[t + 1][j][0][0] + dp[t + 1][j][3 - q][0]) %
                  1000000007;
            dp[i][j][k][0] =
                (dp[i][j][k][0] + (1LL * dp[i][t][k][q] * val) % 1000000007) %
                1000000007;
          }
          for (q = 1; q < 3; ++q) {
            val = (1LL * dp[t + 1][j][0][q] + dp[t + 1][j][1][q] +
                   dp[t + 1][j][2][q]) %
                  1000000007;
            dp[i][j][k][q] =
                (dp[i][j][k][q] + (1LL * dp[i][t][k][0] * val) % 1000000007) %
                1000000007;
          }
        }
      }
    }
  for (i = 0; i < 3; ++i)
    for (j = 0; j < 3; ++j) sol = (1LL * sol + dp[1][n][i][j]) % 1000000007;
  cout << sol;
  return 0;
}
