from collections import defaultdict, deque from sys import stdin readline = stdin.readline def li(): return list(map(int, readline().split())) T = int(input()) case_list = [] for _ in range(T): N = int(input()) case_list.append(list(input())) # 後ろから探して最初に見つけた場所をhelloworldにする # 残りの?にはaを入れる hello = list('helloworld') for case_s in case_list: if ''.join(case_s).count(''.join(hello)) > 0: for j in range(len(case_s)): if case_s[j] == '?': case_s[j] = 'a' print(''.join(case_s)) continue possible = False for i in range(len(case_s) - 10, -1, -1): partial_possible = True for j in range(10): if case_s[i + j] != '?' and case_s[i + j] != hello[j]: partial_possible = False if partial_possible: # もう1つ前がhなら再チェック before_replace = False if i - 1 >= 0 and case_s[i - 1] == 'h': partial_possible = True for j in range(10): if case_s[i + j - 1] != '?' and case_s[i + j - 1] != hello[j]: partial_possible = False if partial_possible: before_replace = True if before_replace: for j in range(10): if case_s[i + j - 1] == '?': case_s[i + j - 1] = hello[j] possible = True for j in range(len(case_s)): if case_s[j] == '?': case_s[j] = 'a' else: for j in range(10): if case_s[i + j] == '?': case_s[i + j] = hello[j] possible = True for j in range(len(case_s)): if case_s[j] == '?': case_s[j] = 'a' if possible: print(''.join(case_s)) break if not possible: print(-1)