#include <bits/stdc++.h>
using namespace std;
long long int binomialCoeff(long long int n, long long int k) {
  long long int C[n + 1][k + 1];
  long long int i, j;
  for (i = 0; i <= n; i++) {
    for (j = 0; j <= min(i, k); j++) {
      if (j == 0 || j == i)
        C[i][j] = 1;
      else
        C[i][j] = (C[i - 1][j - 1] % 1000000007 + C[i - 1][j] % 1000000007) %
                  1000000007;
    }
    C[i][j] = C[i][j] % 1000000007;
  }
  return C[n][k] % 1000000007;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
bool isPrime(int n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (int i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
long long int factorial(long long int n) {
  if (n >= 1)
    return n * factorial(n - 1);
  else
    return 1;
}
long long int power(long long int base, long long int exp) {
  long long int res = 1;
  while (exp > 0) {
    if (exp % 2 == 1) res = (res * base) % 1000000007;
    base = (base * base) % 1000000007;
    exp /= 2;
  }
  return res % 1000000007;
}
long double PI = acos(-1);
priority_queue<pair<long long int, long long int>,
               vector<pair<long long int, long long int> >,
               greater<pair<long long int, long long int> > >
    gq;
signed main() {
  string s1, s2;
  cin >> s1 >> s2;
  long long int l = 0, i, res = 0, k = 0, cnt = 0, t = 0, ans = 0;
  long double p;
  l = s1.size();
  for (i = 0; i < l; i++) {
    if (s1[i] == '+')
      res++;
    else
      res--;
  }
  for (i = 0; i < l; i++) {
    if (s2[i] != '?') {
      k++;
    } else
      break;
  }
  if (k == l) {
    for (i = 0; i < l; i++) {
      if (s2[i] == '+')
        cnt++;
      else
        cnt--;
    }
    if (res == cnt)
      cout << fixed << setprecision(9) << 1 << endl;
    else
      cout << fixed << setprecision(9) << 0 << endl;
  } else {
    for (i = 0; i < l; i++) {
      if (s2[i] == '?') t++;
      if (s2[i] == '+') cnt++;
      if (s2[i] == '-') cnt--;
    }
    for (i = 0; i <= t; i++) {
      if (i == 0) {
        cnt = cnt + t;
        if (cnt == res) ans++;
      } else {
        cnt = cnt - 2;
        if (cnt == res) {
          p = binomialCoeff(t, i);
          ans = ans + p;
        }
      }
    }
    cout << setprecision(9);
    cout << ans / pow(2, t) << endl;
  }
}
