#include<string.h>
int i, n, tep = 0;
void change(char m[])
{
for(i = strlen(m) / 2 - 1; i >= 0; i--)if(m[i] != m[strlen(m)-1 - i])break;
if(i == -1 || tep > 30)return;
char tmp, tmp2, m2[10001], m3[10001];
strcpy(m2, m);
for(i = strlen(m) - 1; i > (strlen(m) - 1) / 2; i--)
{
tmp = m[i];
m[i] = m[strlen(m) - 1 - i];
m[strlen(m) - 1 - i] = tmp;
}
tmp = 0;
for(i = strlen(m) - 1; i >= 0; i--)
{
if(n == 16 && m[i] >= 'A')m[i] -= 7;
if(n == 16 && m2[i] >= 'A')m2[i] -= 7;
m3[i] = (m[i] - '0' + m2[i] - '0' + tmp) % n + '0';
if(m[i] - '0' + m2[i] - '0' + tmp >= n)tmp = 1;
else tmp = 0;
}
if(tmp == 1)
{
for(i = strlen(m) - 1; i >= 0; i--)m3[i + 1] = m3[i];
m3[0] = '1';
}
tep++;
change(m3);
}
int main()
{
char m[10001], m3[10001];
scanf("%d%s", &n, &m);
change(m);
if(tep <= 30)printf("%d", tep);
else printf("Impossible");
return 0;
}