#include using namespace std; bool check(string s) { string r = s; reverse(r.begin(), r.end()); return r == s; } string add(string b, int k) { string a = b; char sixt[20] = "0123456789ABCDEF"; reverse(a.begin(), a.end()); int numa[105], numb[105], numc[105]; int len = a.length(), lenc = 1; string ans; for (int i = 0; i < len; i++) { if (isdigit(a[i])) { numa[len - i] = a[i] - '0'; } else { numa[len - i] = a[i] - 'A' + 10; } if (isdigit(b[i])) { numb[len - i] = b[i] - '0'; } else { numb[len - i] = b[i] - 'A' + 10; } } int x = 0; while (lenc <= len) { numc[lenc] = numa[lenc] + numb[lenc] + x; x = numc[lenc] / k; numc[lenc] %= k; lenc++; } numc[lenc] = x; while (numc[lenc] == 0) { lenc--; } for (int i = lenc; i >= 1; i--) { ans += sixt[numc[i]]; } return ans; } int main() { int n; string m; cin >> n >> m; for (int i = 0; i <= 30; i++) { if (check(m)) { cout << "STEP=" << i << endl; return 0; } m = add(m, n); } cout << "Impossible!" << endl; return 0; }