#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b); }
char input[720];
struct node {
  char res;
  int id;
} src[720];
int G[720];
node sta[720];
long long dp[720][720][4][4];
void calcu(int l, int r) {
  if (l >= r) return;
  if (l + 1 == r) {
    dp[l][r][0][1] = 1;
    dp[l][r][1][0] = 1;
    dp[l][r][2][0] = 1;
    dp[l][r][0][2] = 1;
  }
  if (G[l] == r) {
    calcu(l + 1, r - 1);
    for (int i = 0; i < 3; i++)
      for (int j = 0; j < 3; j++) {
        if (j != 1)
          dp[l][r][0][1] =
              (dp[l][r][0][1] + dp[l + 1][r - 1][i][j]) % 1000000007;
        if (j != 2)
          dp[l][r][0][2] =
              (dp[l][r][0][2] + dp[l + 1][r - 1][i][j]) % 1000000007;
        if (i != 1)
          dp[l][r][1][0] =
              (dp[l][r][1][0] + dp[l + 1][r - 1][i][j]) % 1000000007;
        if (i != 2)
          dp[l][r][2][0] =
              (dp[l][r][2][0] + dp[l + 1][r - 1][i][j]) % 1000000007;
      }
    return;
  } else {
    int t = G[l];
    calcu(l, t);
    calcu(t + 1, r);
    for (int i = 0; i < 3; i++)
      for (int j = 0; j < 3; j++)
        for (int m = 0; m < 3; m++)
          for (int n = 0; n < 3; n++) {
            if (!((m == 1 && n == 1) || (m == 2 && n == 2)))
              dp[l][r][i][j] =
                  (dp[l][r][i][j] +
                   (dp[l][t][i][m] * dp[t + 1][r][n][j]) % 1000000007) %
                  1000000007;
          }
  }
}
int main() {
  while (scanf("%s", input + 1) != EOF) {
    int len = strlen(input + 1);
    int top = 1;
    for (int i = 1; i <= len; i++) {
      if (input[i] == '(') {
        node tmp;
        tmp.id = i;
        tmp.res = input[i];
        sta[top++] = tmp;
      } else {
        if (sta[top - 1].res == '(') {
          G[i] = sta[top - 1].id;
          G[sta[top - 1].id] = i;
          top--;
        } else {
          node tmp;
          tmp.id = i;
          tmp.res = input[i];
          sta[top++] = tmp;
        }
      }
    }
    memset(dp, 0, sizeof(dp));
    calcu(1, len);
    long long ans = 0;
    for (int i = 0; i < 3; i++)
      for (int j = 0; j < 3; j++) ans = (ans + dp[1][len][i][j]) % 1000000007;
    printf("%I64d\n", ans % 1000000007);
  }
  return 0;
}
