#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e3+5;
ll mod=1e9+7;
string s;
ll dp[N][N];
ll cnt(int a,int b){
if(s[a]=='?'&&s[b]=='?')return 3;
if((s[a]=='{'||s[a]=='?')&&(s[b]=='}'||s[b]=='?'))return 1;
if((s[a]=='['||s[a]=='?')&&(s[b]==']'||s[b]=='?'))return 1;
if((s[a]=='('||s[a]=='?')&&(s[b]==')'||s[b]=='?'))return 1;
return 0;
}
ll dq(int l,int r){
if(l>r)return 1;
if((r-l)%2==0)return 0;
if(dp[l][r]!=-1)
return dp[l][r];
ll ans=0;
for(int i=l+1;i<=r;i++){
ans+=dq(l+1,i-1)*dq(i+1,r)*cnt(l,i);
ans%=mod;
}
return dp[l][r]=ans;
}
int main(){
memset(dp,-1,sizeof(dp));
cin>>s;
s='a'+s;
cout<<dq(1,(int)s.length()-1)<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmNvbnN0IGludCBOPTFlMys1OwpsbCBtb2Q9MWU5Kzc7CnN0cmluZyBzOwpsbCBkcFtOXVtOXTsKbGwgY250KGludCBhLGludCBiKXsKICAgIGlmKHNbYV09PSc/JyYmc1tiXT09Jz8nKXJldHVybiAzOwogICAgaWYoKHNbYV09PSd7J3x8c1thXT09Jz8nKSYmKHNbYl09PSd9J3x8c1tiXT09Jz8nKSlyZXR1cm4gMTsKICAgIGlmKChzW2FdPT0nWyd8fHNbYV09PSc/JykmJihzW2JdPT0nXSd8fHNbYl09PSc/JykpcmV0dXJuIDE7CiAgICBpZigoc1thXT09JygnfHxzW2FdPT0nPycpJiYoc1tiXT09JyknfHxzW2JdPT0nPycpKXJldHVybiAxOwogICAgcmV0dXJuIDA7Cn0KCmxsIGRxKGludCBsLGludCByKXsKICAgIGlmKGw+cilyZXR1cm4gMTsKICAgIGlmKChyLWwpJTI9PTApcmV0dXJuIDA7CiAgICBpZihkcFtsXVtyXSE9LTEpCiAgICAgICAgcmV0dXJuIGRwW2xdW3JdOwoKICAgIGxsIGFucz0wOwogICAgZm9yKGludCBpPWwrMTtpPD1yO2krKyl7CiAgICAgICAgYW5zKz1kcShsKzEsaS0xKSpkcShpKzEscikqY250KGwsaSk7CiAgICAgICAgYW5zJT1tb2Q7CiAgICB9CiAgICByZXR1cm4gZHBbbF1bcl09YW5zOwp9CgppbnQgbWFpbigpewogICAgbWVtc2V0KGRwLC0xLHNpemVvZihkcCkpOwogICAgY2luPj5zOwogICAgcz0nYScrczsKICAgIGNvdXQ8PGRxKDEsKGludClzLmxlbmd0aCgpLTEpPDxlbmRsOwp9Cg==