#include //#include using namespace std; //using namespace atcoder; #define all(x) (x).begin(), (x).end() #define rep1(a) for(int i = 0; i < a; i++) #define rep2(i, a) for(int i = 0; i < a; i++) #define rep3(i, a, b) for(int i = a; i < b; i++) #define rep4(i, a, b, c) for(int i = a; i < b; i += c) #define overload4(a, b, c, d, e, ...) e #define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__) #define rrep(i, a, b) for (int i = a; i >= b; i--) #define fore(i, a) for (auto &i : a) #define rfore(a) for(auto i=a.rbegin(), e=a.rend(); i!=e; ++i) #define enld endl #define fix(n) cout << fixed << setprecision(n); #define debug(var) do{std::cout << #var << " : ";view(var);}while(0) template void view(T e){std::cout << e << std::endl;} template void view(const std::vector& v){for(const auto& e : v){ std::cout << e << " "; } std::cout << std::endl;} template void view(const std::vector >& vv){ for(const auto& v : vv){ view(v); } } templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (busing rp_queue=priority_queue,greater>; void fast_io(){cin.tie(nullptr);ios_base::sync_with_stdio(false);} typedef long long ll; typedef unsigned long long ull; const int inf = INT_MAX / 2; const ll infl = 1LL<<60; const ll mod = 1000000007; const int dx[8] = {0, 1, 0,-1, 1, 1,-1,-1}; const int dy[8] = {1, 0,-1, 0, 1,-1, 1,-1}; int main() { fast_io(); int T; cin >> T; string seek = "helloworld"; while(T--) { int n; cin >> n; string s; cin >> s; rep(10) s += '.'; setst; rep(i,n) { bool jud = 1; rep(j,10) if(s[i+j]!='?' && s[i+j]!=seek[j]) jud = 0; if(!jud) continue; string t = s; rep(j,10) t[i+j] = seek[j]; st.insert(t); } if(st.size()==0) cout << -1 << enld; else { string ans = *begin(st); rep(i,ans.size()-10) cout << (ans[i]=='?' ? 'a':ans[i]); cout << endl; } } }