Vasya has recently finished writing a book. Now he faces the problem of giving it the title. Vasya wants the title to be vague and mysterious for his book to be noticeable among others. That's why the title should be represented by a single word containing at least once each of the first *k* Latin letters and not containing any other ones. Also, the title should be a palindrome, that is it should be read similarly from the left to the right and from the right to the left.

Vasya has already composed the approximate variant of the title. You are given the title template *s* consisting of lowercase Latin letters and question marks. Your task is to replace all the question marks by lowercase Latin letters so that the resulting word satisfies the requirements, described above. Each question mark should be replaced by exactly one letter, it is not allowed to delete characters or add new ones to the template. If there are several suitable titles, choose the first in the alphabetical order, for Vasya's book to appear as early as possible in all the catalogues.
The first line contains an integer *k* (1 ≤ *k* ≤ 26) which is the number of allowed alphabet letters. The second line contains *s* which is the given template. In *s* only the first *k* lowercase letters of Latin alphabet and question marks can be present, the length of *s* is from 1 to 100 characters inclusively.
def get_input():
    letter_num = int( input() )
    title_ls = list( input() )
    return letter_num, title_ls

def impossible():
    print( "IMPOSSIBLE" )
    quit()

def check_title_letters( letter_ls, title ):
    for char in title:
        if char.isalpha():
            if char not in letter_ls:
                # print( "letter input out of num range" )
                impossible()

def get_letters( num ):
    letter_ls = []
    for i in range( num ):
        letter_ls.append( chr( i + 97 ) )
    return letter_ls

def get_unused_letters( letter_ls, title_ls ):
    title_set = set( title_ls )
    unused_ls = []
    for i in letter_ls:
        if i not in title_set:
            unused_ls.append( i )
    return unused_ls

def compare_and_assign_values( left, right, unused_ls, letter_ls ):
    # What if unused is empty???
    if unused_ls == []:
        new_val = letter_ls[ 0 ]
    else:
        new_val = unused_ls[ 0 ]
    if left == right:
        # both "?"
        if left == "?":
            left = right = new_val 
            unused_ls = unused_ls[ 1 : ]
    elif left == "?":
        left = right
    elif right == "?":
        right = left
    # catch letters that aren't the same
    else:
        # print( "letters aren't the same - NO symmetry" )
        impossible()
    return left, right, unused_ls

def check_symmetry( letter_ls, title_ls, unused_ls ):
    length = len( title_ls )
    # + 1 to get the middle char in uneven length titles
    half = int( length / 2 ) + 1 
    for i in range( half ):
        left = title_ls[ i ]
        right = title_ls[ -i - 1 ]
        left, right, unused_ls = compare_and_assign_values( left, right, unused_ls, letter_ls )
        title_ls[ i ] = left
        title_ls[ -i -1 ] = right
    title = "".join( title_ls )
    return title, unused_ls 

def main():
    letter_num, title_ls = get_input()
    letter_ls = get_letters( letter_num )
    check_title_letters( letter_ls, title_ls )
    unused_ls = get_unused_letters( letter_ls, title_ls )
    title, unused_ls = check_symmetry( letter_ls, title_ls, unused_ls )
    if unused_ls:
        # print( "unused NOT empty" )
        impossible()
    else:
        print( title )

if __name__ == "__main__":
    main()
