#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1000000;
const int INF = 0x3f3f3f3f;
char s[MAX_N + 10], t[MAX_N + 10];
int cnt_s[30], cnt_t[30];
int main() {
  scanf("%s%s", s, t);
  int n = strlen(s), m = strlen(t);
  memset(cnt_s, 0, sizeof(cnt_s));
  memset(cnt_t, 0, sizeof(cnt_t));
  int w = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '?') w++;
    cnt_s[s[i] - 'a']++;
  }
  for (int i = 0; i < m; i++) cnt_t[t[i] - 'a']++;
  int upper = 0;
  for (int i = 0; i < n; i++) {
    upper = max(upper, cnt_s[i]);
  }
  int maxi = 0;
  for (int i = n / m; i >= 0; i--) {
    int q = w;
    for (int j = 0; j < 26; j++)
      if (cnt_t[j]) {
        if (cnt_s[j] < cnt_t[j] * i) {
          q -= cnt_t[j] * i - cnt_s[j];
        }
      }
    if (q >= 0) {
      maxi = i;
      break;
    }
  }
  vector<char> ans;
  for (int i = 0; i < 26; i++)
    if (cnt_t[i]) {
      for (int j = cnt_s[i]; j < cnt_t[i] * maxi; j++) ans.push_back(i + 'a');
    }
  while (ans.size() < w) ans.push_back('a');
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '?') s[i] = ans[cnt++];
  }
  printf("%s\n", s);
  return 0;
}
