#include <iostream>
#include <string.h>
using namespace std;
void add(char M[], int N)
{
char M1[108];
strcpy(M1, M);
strrev(M1);
int c = 0;
for (int i = 0;M1[i] != '\0' || c == 1;i++)
{
if (c == 1 && M1[i] == '\0')
{
M[i] = 1 + '0';
M[i + 1] = '\0';
break;
}
if ((M1[i] - '0') + (M[i] - '0') + c >= N)
{
M[i] = ((M[i] - '0') + (M1[i] - '0') - N + c) + '0';
c = 1;
}
else
{
M[i] = ((M[i] - '0') + (M1[i] - '0') + c) + '0';
c = 0;
}
}
}
void add16(char M[])
{
char M1[108];
strcpy(M1, M);
strrev(M1);
int c = 0;
for (int i = 0;M1[i] != '\0' || c == 1;i++)
{
if (c == 1 && M1[i] == '\0')
{
M[i] = 1 + '0';
M[i + 1] = '\0';
break;
}
if (int(M[i]) <= 57 && int(M1[i]) <= 57)
{
if (((int(M[i])) - 48) + ((int(M1[i])) - 48) + c <= 9)
{
M[i] = char(((int(M[i])) - 48) + ((int(M1[i])) - 48) + c + 48);
c = 0;
}
else if (((int(M[i])) - 48) + ((int(M1[i])) - 48) + c <= 15)
{
M[i] = char(((int(M[i])) - 48) + ((int(M1[i])) - 48) + c + 55);
c = 0;
}
else
{
M[i] = char(((int(M[i])) - 48) + ((int(M1[i])) - 48) + c + 55);
c = 1;
}
}
else if (int(M1[i]) >= 65 && int(M[i]) >= 65)
{
if (((int(M[i])) - 55) + ((int(M1[i])) - 55) + c - 16 <= 9)
{
M[i] = char(((int(M[i])) - 55) + ((int(M1[i])) - 55) + c - 16 + 48);
c = 1;
}
else
{
M[i] = char(((int(M[i])) - 55) + ((int(M1[i])) - 55) + c - 16 + 55);
c = 1;
}
}
else
{
if (((int(M[i])) - 48) + ((int(M1[i])) - 55) + c <= 15)
{
M[i] = char(((int(M[i])) - 48) + ((int(M1[i])) - 55) + c + 55);
c = 0;
}
else
{
M[i] = char(((int(M[i])) - 48) + ((int(M1[i])) - 55) + c - 16 + 48);
c = 1;
}
}
}
}
int main()
{
int N;
char M[108];
cin >> N;
cin >> M;
int i;
char L[108];
for (i = 0;i <= 29;i++)
{
if (N <= 10)
{
add(M, N);
}
else
{
add16(M);
}
strcpy(L, M);
strrev(L);
if (strcmp(L, M) == 0)
{
break;
}
}
if (i <= 29)
{
cout << "STEP=" << i + 1;
}
else
{
cout << "Impossible!";
}
return 0;
}