#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
#include <stdlib.h>
void getnum(int* num, int *len);
bool isReverse(int *num, int len);
void reverse(int *num, int N, int len, int times);
int charToNum(char c, int N);
int main() {
int N, len = 0;
scanf("%d", &N);
getchar();
int num[100] = {0};
getnum(num, &len);
reverse(num, N, len, 0);
return 0;
}
void getnum(int* num, int *len) {
char input[101];
fgets(input, sizeof(input), stdin);
*len = 0;
for (int i = 0; i < strlen(input); i++) {
if (isdigit(input[i])) {
num[*len] = input[i] - '0';
(*len)++;
} else if (input[i] == '\n' || input[i] == '\r') {
break;
}
}
}
void reverse(int *num, int N, int len, int times) {
if (times >= 30) {
printf("Impossible!\n");
return;
}
if (isReverse(num, len)) {
printf("STEP=%d\n", times);
return;
}
int newLen = len + 1;
int tmp[newLen];
for(int i = 0; i < newLen; i++) tmp[i] = 0;
for (int i = 0; i < len; i++) {
tmp[i] += num[i] + num[len - 1 - i];
if (tmp[i] >= N) {
tmp[i] -= N;
tmp[i + 1] += 1;
}
}
if (tmp[newLen - 1] == 0) newLen--;
reverse(tmp, N, newLen, times + 1);
}
bool isReverse(int *num, int len) {
int i = 0, j = len - 1;
while(i <= j) {
if(num[i] != num[j]) return false;
i++; j--;
}
return true;
}
int charToNum(char c, int N) {
if (isdigit(c))
return c - '0';
if (N == 16 && isupper(c))
return c - 'A' + 10;
return c - 'a' + 10;
}