# 这个题还是蛮难的,显示中等难度(其实也不是很难,一开始没理解题意,但是要思考的细节很多,有意思)

# 对于10进制数87:  可以通过n步加法得到一个回文数
# STEP1:87+78  = 165                  STEP2:165+561 = 726
# STEP3:726+627 = 1353                STEP4:1353+3531 = 4884
# 在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。(注意是N进制的加法,我一开始看错以为是转成10进制然后加法)
# 注意这里每一次加法都是加上把本身翻转后的数

# 写一个程序,给定一个N(2<=N<=10或N=16)进制数M(100位之内),求最少经过几步可以得到回文数。
# 如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”
# 进制N>10时,使用大写'A'字母表示10,'B'表示11,...,'E'表示16

# 感觉一个首先的思路是,对于输入的不同进制得先统一进制

def to_ten(x, N):     # 任意输入进制转成10进制
    number = 0
    for i in range(len(x)):
        if x[i]=="A":
            number+=10*int(N)**(len(x)-1-i)
        elif x[i]=="B":
            number+=11*int(N)**(len(x)-1-i)
        elif x[i]=="C":
            number+=12*int(N)**(len(x)-1-i)
        elif x[i]=="D":
            number+=13*int(N)**(len(x)-1-i)
        elif x[i]=="E":
            number+=14*int(N)**(len(x)-1-i)
        elif x[i]=="F":
            number+=15*int(N)**(len(x)-1-i)
        else:
            number+=int(x[i])*int(N)**(len(x)-1-i)
    return number

def ten_ToAny(N, x):    # 将10进制转回一开始的输入进制,N为进制
    N= int(N)
    ls = []
    while True:
        div, mod = divmod(x, N)
        ls.append(mod)
        x = div
        if x==0:
            break
 
    temp_list=list(map(str, ls[::-1]))
    for i in range(len(temp_list)):
        if temp_list[i] == '10':
            temp_list[i] = 'A'
        elif temp_list[i] == '11':
            temp_list[i] = 'B'
        elif temp_list[i] == '12':
            temp_list[i] = 'C'
        elif temp_list[i] == '13':
            temp_list[i] = 'D'
        elif temp_list[i] == '14':
            temp_list[i] = 'E'
        elif temp_list[i] == '15':
            temp_list[i] = 'F'
 
    return ''.join(temp_list)

# 关于是不是回文数这个问题自己一开始想傻了,忘记python可以直接利用字符串相等判断
def huiwen(x):
    if x==x[::-1]:
        return True
    else:
        return False

def add(x, X, num=0):
    if huiwen(x):
        print("STEP={}".format(num))
        return True
    else:
        y = x[::-1]   # 翻转,得到加数
        if X != 10:
            c = to_ten(x, X)+to_ten(y, X)
            c = ten_ToAny(X, c)   # 10进制加完之后在转换回去
        else:
            c = int(x) + y
        num += 1
        if num>30:
            print("Impossible!")
            return True
        else:
            return add(str(c), X, num)     # 采用递归的思想,因为要加很多步嘛,很自然的想法

if __name__ == "__main__":
    N = input()    # 进制数
    M = input()    # 数值
    add(M, N)
    ### 代码稍微写的有点复杂,懒得重构了