//问题在哪里?
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int n;
bool is_(vector<int> &A)
{
auto B = A;
reverse(B.begin(), B.end());
return A == B;
}
vector<int> add(vector<int> &A, vector<int> &B)
{
vector<int> C;
int t = 0;
for (int i = 0; i < A.size(); i ++ )
{
t += A[i];
t += B[i];
C.push_back(t % n);
t /= n;
}
if (t) C.push_back(t);
return C;
}
int main()
{
vector<int> A = {};
string a;
cin >> n >> a;
for (int i = a.size() - 1; i >= 0; i -- )
{
if ('0' <= a[i] && a[i] <= '9') A.push_back(a[i] - '0');
else A.push_back(a[i] - '@');
}
if (is_(A))
{
cout << "STEP=0";
return 0;
}
// cout << endl;
// for (int i = A.size() - 1; i >= 0; i -- )
// {
// printf("%d", A[i]);
// }
// cout << endl;
auto B = A;
reverse(B.begin(), B.end());
int i;
for (i = 1; i <= 30; i ++ )
{
A = add(A, B);
// for (int i = A.size() - 1; i >= 0; i -- )
// {
// printf("%d", A[i]);
// }
// cout << endl;
if (is_(A)) break;
B = A;
reverse(B.begin(), B.end());
}
if(i <= 30) printf("STEP=%d", i);
else printf("Impossible!");
return 0;
}