#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(rand());
long long a[26], b[26];
string s, t;
long long n, m;
long long k = 0;
bool check(long long mid) {
  long long ost = k;
  long long nado[26];
  for (long long i = 0; i < 26; ++i) {
    nado[i] = a[i] * mid;
  }
  for (long long i = 0; i < 26; ++i) {
    if (b[i] < nado[i]) {
      ost -= (nado[i] - b[i]);
    }
  }
  return ost >= 0;
}
signed main() {
  ios_base::sync_with_stdio(false);
  for (long long i = 0; i < n; ++i) {
    a[i] = 0;
    b[i] = 0;
  }
  cin >> s;
  cin >> t;
  n = s.size();
  m = t.size();
  for (long long i = 0; i < n; ++i) {
    if (s[i] != '?') {
      ++b[s[i] - 97];
    }
    k += (s[i] == '?');
  }
  for (long long i = 0; i < m; ++i) {
    ++a[t[i] - 97];
  }
  long long l = 0;
  long long r = 1000 * 1000 + 1;
  while (l < r - 1) {
    long long mid = (l + r) / 2;
    if (check(mid)) {
      l = mid;
    } else {
      r = mid;
    }
  }
  long long nado[26];
  for (long long i = 0; i < 26; ++i) {
    nado[i] = a[i] * l;
  }
  long long mynado[26];
  for (long long i = 0; i < 26; ++i) {
    mynado[i] = 0;
    if (b[i] < nado[i]) {
      mynado[i] = (nado[i] - b[i]);
    }
  }
  long long myii = 0;
  for (long long i = 0; i < n; ++i) {
    if (s[i] != '?') {
      cout << s[i];
    } else {
      while (mynado[myii] <= 0 && myii < 25) {
        ++myii;
      }
      cout << char(myii + 97);
      --mynado[myii];
    }
  }
  return 0;
}
