#include <stdio.h>
#include <string.h>
#define LEN 2001
void reserve(char arr[], char result[], int len)
{
int i, j;
memset(result, 0, LEN);
for (i = 0, j = len - 1; i < len; i++, j--)
{
result[j] = arr[i];
}
}
void reserve1(char c[])
{
int i, j=strlen(c)-1;
char shit;
for (i = 0; i < j; i++, j--)
{
shit=c[i];
c[i]=c[j];
c[j]=shit;
}
}
int plus(char a[], char b[], char c[], int n, int len)
{
int i, carry = 0;
memset(c, 0, LEN);
for (i = 0; i < len; i++)
{
int sum = (a[i] - '0') + (b[i] - '0') + carry;
c[i] = sum % n + '0';
carry = sum / n;
}
while (carry > 0)
{
c[i] = carry%n + '0';
carry/=n;
i++;
}
reserve1(c);
return i;
}
int is_palindrome(char c[], int len)
{
int i, j;
for (i = 0, j = len - 1; i < j; i++, j--)
{
if (c[i] != c[j])
return 0;
}
return 1;
}
int main()
{
char a[LEN];
char b[LEN];
char c[LEN];
int n;
scanf("%d", &n);
getchar();
fgets(a, LEN, stdin);
int len = strlen(a);
if (a[len - 1] == '\n')
{
a[len - 1] = '\0';
len--;
}
reserve(a, b, len);
int lennew = plus(a, b, c, n, len);
int STEP=1;
while (is_palindrome(c, lennew) == 0)
{
strcpy(a, c);
len = strlen(a);
reserve(a, b, len);
lennew = plus(a, b, c, n, len);
STEP++;
}
if (STEP<=30) printf("STEP=%d", STEP);
else printf("Impossible!\n");
return 0;
}