Developers often face with regular expression patterns. A pattern is usually defined as a string consisting of characters and metacharacters that sets the rules for your search. These patterns are most often used to check whether a particular string meets the certain rules.

In this task, a pattern will be a string consisting of small English letters and question marks ('?'). The question mark in the pattern is a metacharacter that denotes an arbitrary small letter of the English alphabet. We will assume that a string matches the pattern if we can transform the string into the pattern by replacing the question marks by the appropriate characters. For example, string aba matches patterns: ???, ??a, a?a, aba.

Programmers that work for the R1 company love puzzling each other (and themselves) with riddles. One of them is as follows: you are given *n* patterns of the same length, you need to find a pattern that contains as few question marks as possible, and intersects with each of the given patterns. Two patterns intersect if there is a string that matches both the first and the second pattern. Can you solve this riddle?
The first line contains a single integer *n* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>) — the number of patterns. Next *n* lines contain the patterns.

It is guaranteed that the patterns can only consist of small English letters and symbols '?'. All patterns are non-empty and have the same length. The total length of all the patterns does not exceed 10<sup class="upper-index">5</sup> characters.
from collections import defaultdict, deque, Counter
from functools import lru_cache
from heapq import heappush, heappop
from bisect import bisect_right, bisect_left

def inpNum():
    return int(input())
def inpStr():
    return input()
def inpSepNum():
    return map(int, input().split())
def inpNumList():
    return list(map(int, input().split()))
def inpChList():
    return list(input().split())
n = inpNum()
s = []
for _ in range(n):
    s.append(input())
s_len = len(s[0])
ans = []
for i in range(s_len):
    flag = True
    prev = s[0][i]
    for j in range(1, n):
        if s[j][i] != prev:
            if s[j][i] != '?' and prev != '?':
                flag = False
            else:
                if prev == '?':
                    prev = s[j][i]
    if not flag:
        ans.append('?')
    else:
        if prev == '?':
            ans.append('a')
        else:
            ans.append(prev)
# print(ans)
ans = "".join(ans)
print(ans)
        
         

