#include<bits/stdc++.h>
using namespace std;
const int mod=1000000007;
int t,n,m,ans;
int h1,t1,h2,t2,h3,t3;
char s[410],c[410],r[410];
bool check(char x[],char y[]){
int x1=t2-h2,y1=t3-h3;
if(x1!=y1) return 0;
else{
for(int i=1;i<=x1;i++)
if(x[h2+i-1]!=y[h3+i-1])
return 0;
return 1;
}
}
void dfs(int t){
if(t==n+1){
if(check(c,r)){
ans++;
ans%=mod;
}
return ;
}
if(s[h1]!='-') r[t3++]=s[h1++];
else{
t3--;dfs(t+1);t3++;
h3++;dfs(t+1);h3--;
}
}
int main(){
cin>>t;
while(t--){
cin>>n>>m;
getchar();
cin>>s>>c;
t1=n,t2=m;
dfs(1);
cout<<ans%mod<<endl;
ans=0;
}
return 0;
}
求大佬看看