#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  double factorial(double x);
  string s1;
  string s2;
  cin >> s1;
  cin >> s2;
  int sum1 = 0;
  for (unsigned int i = 0; i < s1.length(); i++) {
    if (s1[i] == '+')
      sum1 = sum1 + 1;
    else
      sum1 = sum1 - 1;
  }
  int sum2 = 0;
  double count = 0;
  for (unsigned int i = 0; i < s2.length(); i++) {
    if (s2[i] == '?')
      count++;
    else {
      if (s2[i] == '+')
        sum2 = sum2 + 1;
      else
        sum2 = sum2 - 1;
    }
  }
  double counting = count;
  double countpos = 0;
  double countneg = 0;
  int min = sum1 - sum2;
  int pos;
  int neg;
  if (count > 0) {
    while (count > 0) {
      pos = sum2 + 1;
      neg = sum2 - 1;
      if (abs(sum1 - pos) < min) {
        min = sum1 - pos;
        sum2 = pos;
        countpos++;
      } else {
        min = sum1 - neg;
        sum2 = neg;
        countneg++;
      }
      count--;
    }
    if (min == 0) {
      double z = factorial(counting) / factorial(countpos);
      z = z / factorial(countneg);
      z = z / pow(2, counting);
      cout << fixed << setprecision(12) << z;
    } else {
      double x = 0;
      cout << fixed << setprecision(12) << x;
    }
  } else {
    double v;
    if (sum1 == sum2)
      v = 1;
    else
      v = 0;
    cout << fixed << setprecision(12) << v;
  }
  return 0;
}
double factorial(double x) {
  double fact = 1;
  if (x == 0 || x == 1)
    return 1;
  else {
    for (double i = x; i >= 1; i--) {
      fact = fact * i;
    }
    return fact;
  }
}
