#include <bits/stdc++.h>
#define int long long
#define mod 1000000007ll
using namespace std;
int f[505][505], g[505][505];
string s;
int get(int i, int j) {
if (s[i] == '(') return s[j] == ')' || s[j] == '?';
if (s[i] == '[') return s[j] == ']' || s[j] == '?';
if (s[i] == '{') return s[j] == '}' || s[j] == '?';
if (s[i] == '?')
return s[j] == '?' ? 3 : (s[j] == ')' || s[j] == ']' || s[j] == '}');
return 0;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> s;
int n = s.size();
s = " " + s;
for (int i = 1; i < s.size(); i++) f[i][i + 1] = g[i][i + 1] = get(i, i + 1);
for (int sz = 4; sz <= n; sz += 2) {
for (int i = 1; i <= n - sz + 1; i++) {
int j = sz + i - 1;
f[i][j] = g[i][j] = get(i, j) * g[i + 1][j - 1];
for (int k = i + 2; k < j; k++)
g[i][j] += f[i][k - 1] * g[k][j], g[i][j] %= mod;
f[i][j] %= mod;
}
}
cout << g[1][n];
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIG1vZCAxMDAwMDAwMDA3bGwKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGZbNTA1XVs1MDVdLCBnWzUwNV1bNTA1XTsKc3RyaW5nIHM7CmludCBnZXQoaW50IGksIGludCBqKSB7CiAgICBpZiAoc1tpXSA9PSAnKCcpIHJldHVybiBzW2pdID09ICcpJyB8fCBzW2pdID09ICc/JzsKICAgIGlmIChzW2ldID09ICdbJykgcmV0dXJuIHNbal0gPT0gJ10nIHx8IHNbal0gPT0gJz8nOwogICAgaWYgKHNbaV0gPT0gJ3snKSByZXR1cm4gc1tqXSA9PSAnfScgfHwgc1tqXSA9PSAnPyc7CiAgICBpZiAoc1tpXSA9PSAnPycpCiAgICAgICAgcmV0dXJuIHNbal0gPT0gJz8nID8gMyA6IChzW2pdID09ICcpJyB8fCBzW2pdID09ICddJyB8fCBzW2pdID09ICd9Jyk7CiAgICByZXR1cm4gMDsKfQpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsgICAgY291dC50aWUoTlVMTCk7CiAgICBjaW4gPj4gczsKICAgIGludCBuID0gcy5zaXplKCk7CiAgICBzID0gIiAiICsgczsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcy5zaXplKCk7IGkrKykgZltpXVtpICsgMV0gPSBnW2ldW2kgKyAxXSA9IGdldChpLCBpICsgMSk7CiAgICBmb3IgKGludCBzeiA9IDQ7IHN6IDw9IG47IHN6ICs9IDIpIHsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuIC0gc3ogKyAxOyBpKyspIHsKICAgICAgICAgICAgaW50IGogPSBzeiArIGkgLSAxOwogICAgICAgICAgICBmW2ldW2pdID0gZ1tpXVtqXSA9IGdldChpLCBqKSAqIGdbaSArIDFdW2ogLSAxXTsKICAgICAgICAgICAgZm9yIChpbnQgayA9IGkgKyAyOyBrIDwgajsgaysrKQogICAgICAgICAgICAgICAgZ1tpXVtqXSArPSBmW2ldW2sgLSAxXSAqIGdba11bal0sIGdbaV1bal0gJT0gbW9kOwogICAgICAgICAgICBmW2ldW2pdICU9IG1vZDsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGdbMV1bbl07Cn0K