#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int nax = 1e5 + 10;
vector<int> tree(4 * nax);
int i, j, x, y, k;
bool sortbysec(const pair<long long, long long> &a,
               const pair<long long, long long> &b) {
  return (a.second < b.second);
}
int main() {
  long long q, i, j;
  cin >> q;
  while (q--) {
    string s;
    cin >> s;
    size_t found = s.find("aa");
    if (found != string::npos)
      cout << -1 << endl;
    else {
      size_t foun = s.find("bb");
      if (foun != string::npos)
        cout << -1 << endl;
      else {
        size_t fou = s.find("cc");
        if (fou != string::npos)
          cout << -1 << endl;
        else {
          if (s[0] == '?' && s.length() == 1) s[0] = 'a';
          if (s[0] == '?') {
            if (s[1] == 'a') s[0] = 'b';
            if (s[1] == 'c') s[0] = 'a';
            if (s[1] == 'b') s[0] = 'c';
            if (s[1] == '?') s[0] = 'a';
          }
          long long p = s.length() - 1;
          if (s[p] == '?') {
            if (s[p - 1] == 'a') {
              s[p] = 'b';
            }
            if (s[p - 1] == 'c') s[p] = 'a';
            if (s[p - 1] == 'b') s[p] = 'c';
            if (s[p - 1] == '?') s[p] = 'a';
          }
          for (i = 1; i < s.length() - 1; i++) {
            if (s[i] == '?') {
              if ((s[i - 1] == 'a' && s[i + 1] == 'a') ||
                  (s[i + 1] == 'a' && s[i - 1] == 'a'))
                s[i] = 'b';
              if ((s[i - 1] == 'b' && s[i + 1] == 'b') ||
                  (s[i + 1] == 'b' && s[i - 1] == 'b'))
                s[i] = 'c';
              if ((s[i - 1] == 'c' && s[i + 1] == 'c') ||
                  (s[i + 1] == 'c' && s[i - 1] == 'c'))
                s[i] = 'a';
              if ((s[i - 1] == 'a' && s[i + 1] == 'b') ||
                  (s[i + 1] == 'a' && s[i - 1] == 'b'))
                s[i] = 'c';
              if ((s[i - 1] == 'a' && s[i + 1] == 'c') ||
                  (s[i + 1] == 'a' && s[i - 1] == 'c'))
                s[i] = 'b';
              if ((s[i - 1] == 'c' && s[i + 1] == 'b') ||
                  (s[i + 1] == 'c' && s[i - 1] == 'b'))
                s[i] = 'a';
              if ((s[i - 1] == 'a' && s[i + 1] == '?') ||
                  (s[i + 1] == 'a' && s[i - 1] == '?'))
                s[i] = 'b';
              if ((s[i - 1] == 'b' && s[i + 1] == '?') ||
                  (s[i + 1] == 'b' && s[i - 1] == '?'))
                s[i] = 'c';
              if ((s[i - 1] == 'c' && s[i + 1] == '?') ||
                  (s[i + 1] == 'c' && s[i - 1] == '?'))
                s[i] = 'a';
            }
          }
          cout << s << endl;
        }
      }
    }
  }
}
