#include <stdio.h>

int n;
int arr[20] = {0}, arr_r[20] = {0};
char crr[10] = {0};
int lenght = 0;

void func_crr_to_arr()
{
    for(lenght = 1; crr[lenght-1] != 0 ; lenght++)
    {
        if(crr[lenght-1] >= '0' && crr[lenght-1] <= '9')        arr[lenght] = crr[lenght-1] - '0';
        else if(crr[lenght-1] >= 'A' && crr[lenght-1] <= 'F')   arr[lenght] = crr[lenght-1] - 'A' + 10;
    }
    lenght -= 1;
}

int func_arr_palindrome_judge()
{
    for(int i = 1; i <= lenght ; i++)
    {
        if(arr[i] != arr[lenght - i + 1])
            return 0;
    }
    return 1;
}

void func_get_arr_reserve()
{
    for(int i = 1; i <= lenght ; i++)
    {
        arr_r[i] = arr[lenght - i + 1];
    }
}

void func_arr_reset()
{
    for(int i = lenght; i > 0; i--)
    {
        if((arr[i] + arr_r[i]) / n != 0 )
        {
            arr[i - 1] ++;
            arr[i] = arr[i] + arr_r[i] - n;
        }
        else
        {
            arr[i] = arr[i] + arr_r[i];
        }
    }
    if(arr[0] != 0)
    {
        for(int i = lenght; i >= 0; i--)
        {
            arr[i + 1] = arr[i];
        }
        arr[0] = 0;
        lenght ++;
    }
}

int main()
{
    int step = 0;

    scanf("%d", &n);
    scanf("%s", &crr);
    func_crr_to_arr();

    while(!func_arr_palindrome_judge())
    {
        func_get_arr_reserve();
        func_arr_reset();
        step ++;
        if(step >= 30)break;
    }
    if(step >= 30)printf("Impossible!");
    else printf("STEP=%d", step);
    return 0;
}