```cpp
#include<bits/stdc++.h>
using namespace std;
int n1[205],n2[205],step,base;
char c[105];
void add(){
for(int i=1;i<=200;i++){
n1[i]+=n2[i];
}
for(int i=1;i<=199;i++){
n1[i+1]+=n1[i]/base;
n1[i]%=base;
}
}
int len(int x[]){
int t;
for(int i=200;x[i]==0;i--)t=i;
return t-1;
}
void wrap(){
int len1=len(n1);
for(int i=len1;i>=1;i--){
n2[i]=n1[len1-i+1];
}
}
bool check(int x[]){
for(int i=1;i<=len(x)/2+1;i++){
if(x[i]!=x[len(x)-i+1])return 0;
}
return 1;
}
int main(){
cin>>base>>c;
for(int i=1;i<=strlen(c);i++){
if(c[strlen(c)-i]<='9')n1[i]=c[strlen(c)-i]-'0';
else if(c[strlen(c)-i]>='A'&&c[strlen(c)-i]<='Z')n1[i]=c[strlen(c)-i]-'A'+10;
else n1[i]=c[strlen(c)-i]-'a'+10;
}
for(;step<=30;step++){
wrap();
add();
if(check(n1)){cout<<"STEP="<<step+1;return 0;}
}
cout<<"Impossible!";
return 0;
}
```
by luoguandy @ 2023-12-17 08:59:39