#include <bits/stdc++.h>
using namespace std;
void rd(long long &x) { scanf("%lld", &x); }
void rd(long long &x, long long &y) { scanf("%lld%lld", &x, &y); }
void rd(long long &x, long long &y, long long &z) {
  scanf("%lld%lld%lld", &x, &y, &z);
}
map<char, long long> ms, mt;
string s, t;
long long sl, tl, k;
bool ok(long long p) {
  long long pk = k;
  for (char c = 'a'; c <= 'z'; c++) {
    if (mt[c] * p > ms[c]) {
      pk -= (mt[c] * p - ms[c]);
      if (pk < 0) return 0;
    }
  }
  return 1;
}
int main() {
  long long i;
  cin >> s >> t;
  sl = s.size();
  tl = t.size();
  for (i = 0; i < (sl); i++) ms[s[i]]++;
  for (i = 0; i < (tl); i++) mt[t[i]]++;
  k = ms['?'];
  long long low = 0, high = sl, mid, ans = 0;
  while (low <= high) {
    mid = (low + high) >> 1;
    if (ok(mid)) {
      ans = mid;
      low = mid + 1;
    } else
      high = mid - 1;
  }
  char c = 'a';
  for (long long now = 0; now < sl; now++) {
    if (s[now] == '?') {
      for (; c <= 'z'; c++) {
        if (mt[c] * ans > ms[c]) {
          s[now] = c;
          ms[c]++;
          break;
        }
      }
    }
  }
  for (i = 0; i < (sl); i++) {
    if (s[i] == '?') s[i] = 'a';
  }
  cout << s;
  return 0;
}
