#include<iostream>
#include<string>
using namespace std;
int ans=1;
void dfs(const string& preOrder,int begin,int end,const string& postOrder,int rbegin,int rend){
if(begin>=end){return;}
if(rbegin<=rend){return;}
if(begin+1==end){
if(preOrder[begin]==postOrder[rbegin]){
return;
}
else{
**
cout<<"Do not exist this case"<<endl;
return;
}
}
else{
int cut=-1;
for(int i=rbegin;i>rend;i--){
if(postOrder[i]==preOrder[begin+1]){
cut=i;
break;
}
}
if(cut==rbegin-1){
ans*=2;
}
dfs(preOrder,begin+1,begin+1+(cut-rend),postOrder,cut,rend);
dfs(preOrder,begin+1+(cut-rend),end,postOrder,rbegin-1,cut);
}
}
int main(){
string preOrder,postOrder;
cin>>preOrder>>postOrder;
dfs(preOrder,0,preOrder.length(),postOrder,postOrder.length()-1,-1);
cout<<ans<<endl;
return 0;
}