#include <bits/stdc++.h>
using namespace std;
const int mxN = 1e6 + 6;
char s[mxN], t[mxN];
int freq[29], freq2[29];
int main() {
  scanf("%s %s", s + 1, t + 1);
  int n = strlen(s + 1);
  int m = strlen(t + 1);
  for (int i = 1; i <= m; ++i) ++freq2[t[i] - 'a'];
  int have = 0;
  for (int i = 1; i <= n; ++i) {
    if (s[i] == '?') {
      ++have;
      continue;
    }
    ++freq[s[i] - 'a'];
  }
  int max_time = 0;
  for (int i = 0; i < 27; ++i) {
    if (!freq2[i]) continue;
    max_time = max(max_time, freq[i] / freq2[i]);
  }
  vector<char> printing;
  while (true) {
    bool can = true;
    for (int i = 0; i < 27; ++i) {
      if (!freq2[i]) continue;
      if (freq[i] >= freq2[i]) {
        freq[i] -= freq2[i];
        continue;
      }
      int need = freq2[i] - freq[i];
      if (need > have) {
        can = false;
        break;
      }
      have -= need;
      freq[i] = 0;
      for (int j = 0; j < need; ++j) printing.push_back(i + 'a');
    }
    if (!can) break;
  }
  for (int i = 1; i <= n; ++i) {
    if (s[i] == '?') {
      if (!printing.empty()) {
        s[i] = printing.back();
        printing.pop_back();
      } else
        s[i] = 'a';
    }
    printf("%c", s[i]);
  }
}
