//高精度
#include<iostream>
#include<string>
using namespace std;
int n ; // n进位
int jia(int *a,int *b)
{
for(int i=1;i<1000;i++)
{
a[i]=a[i]+b[i];
a[i+1]+=a[i]/n;
a[i]=a[i]%n;
}
}
int fuzhi(int *a,int *b) //将a的倒位数赋值给b
{
int ws(1),flag(0);
for(int i=1000;i>0;i--)
{
if(a[i]!=0)
flag=1;
if(flag)
{
b[ws]=a[i];
ws++;
}
}
}
int p(int *a,int *b) //检测a以及其倒位的值是否相同
{
for(int i=1;i<1000;i++)
{
if(a[i]!=b[i])
{
return 0 ;
}
}
return 1;
}
int main()
{
int a[1000]={0},b[1000]={0};
char c[100]={'0'}; //应付16进制的情况
int m;
cin >> n ;
if(n==16)
{
cin >> c;
for(int i=1;i<1000;i++)
{
if(c[i]>='0'&&c[i]<='9')
a[i]=c[i]-'0';
if(c[i]>='a'&&c[i]<='f')
a[i]=c[i]-'a'+10;
if(c[i]>='A'&&c[i]<='F')
a[i]=c[i]-'A'+10;
}
}
else
{
cin >> m;
for(int i=1;i<1000;i++)
{
a[i]=m%10;
m/=10;
}
}
fuzhi(a,b);
int step(0);
while(1)
{
jia(a,b);
fuzhi(a,b);
step++;
if(step==31)
{
cout << "Impossible!";
return 0;
}
if(p(a,b))
{
cout << "STEP=" << step;
return 0;
}
}
}