#include <bits/stdc++.h>
using namespace std;
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
typedef long long ll;
vector<double> prob;
void get_position(string string,double position){
if(string.empty()){
prob.push_back(position);
return;
}
if(string[0]=='+'){
string = string.erase(0, 1);
get_position(string,++position);
}else if(string[0]=='-'){
string = string.erase(0, 1);
get_position(string,--position);
}
else {
string = string.erase(0, 1);
int temp = position;
get_position(string,++position);
position = temp;
get_position(string,--position);
}
}
int main() {
FAST
string s1,s2;
cin >> s1 >> s2;
double desired_pos = 0;
for(auto c : s1){
if(c == '+'){
desired_pos++;
}
else{
desired_pos--;
}
}
get_position(s2,0);
cout << fixed << setprecision(12) << ((double)count(prob.begin(),prob.end(),desired_pos)/prob.size()) << " \n";
// system("pause");
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiAKIAp2ZWN0b3I8ZG91YmxlPiBwcm9iOwp2b2lkIGdldF9wb3NpdGlvbihzdHJpbmcgc3RyaW5nLGRvdWJsZSBwb3NpdGlvbil7CiAgICBpZihzdHJpbmcuZW1wdHkoKSl7CiAgICAgICAgcHJvYi5wdXNoX2JhY2socG9zaXRpb24pOwogICAgICAgIHJldHVybjsKICAgIH0KIAogICAgaWYoc3RyaW5nWzBdPT0nKycpewogICAgICAgIHN0cmluZyA9IHN0cmluZy5lcmFzZSgwLCAxKTsKICAgICAgICBnZXRfcG9zaXRpb24oc3RyaW5nLCsrcG9zaXRpb24pOwogICAgICAgIAogICAgfWVsc2UgaWYoc3RyaW5nWzBdPT0nLScpewogICAgICAgIHN0cmluZyA9IHN0cmluZy5lcmFzZSgwLCAxKTsKICAgICAgICBnZXRfcG9zaXRpb24oc3RyaW5nLC0tcG9zaXRpb24pOwogICAgICAgCiAgICB9CiAgICBlbHNlIHsKICAgICAgICBzdHJpbmcgPSBzdHJpbmcuZXJhc2UoMCwgMSk7CiAgICAgICAgaW50IHRlbXAgPSBwb3NpdGlvbjsKICAgICAgICBnZXRfcG9zaXRpb24oc3RyaW5nLCsrcG9zaXRpb24pOwogICAgICAgIHBvc2l0aW9uID0gdGVtcDsKICAgICAgICBnZXRfcG9zaXRpb24oc3RyaW5nLC0tcG9zaXRpb24pOwogICAgfQogCn0KIAogCmludCBtYWluKCkgewogICAgRkFTVAogICAgIAogICAgc3RyaW5nIHMxLHMyOwogICAgY2luID4+IHMxID4+IHMyOwogICAgZG91YmxlIGRlc2lyZWRfcG9zID0gMDsKICAgIGZvcihhdXRvIGMgOiBzMSl7CiAgICAgICAgaWYoYyA9PSAnKycpewogICAgICAgICAgICBkZXNpcmVkX3BvcysrOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBkZXNpcmVkX3Bvcy0tOwogICAgICAgIH0KICAgIH0KICAgIGdldF9wb3NpdGlvbihzMiwwKTsKIAogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMTIpIDw8ICgoZG91YmxlKWNvdW50KHByb2IuYmVnaW4oKSxwcm9iLmVuZCgpLGRlc2lyZWRfcG9zKS9wcm9iLnNpemUoKSkgPDwgIiBcbiI7CiAgICAvLyBzeXN0ZW0oInBhdXNlIik7CiAgICByZXR1cm4gMDsKfQ==