#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define DEBUG(x) cout << '>' << #x << ':' << x << endl; #define FOR(i, b) for (i = (0); i < (b); ++i) #define FOR2(i, a, b) for (int i = (a); i > (b); --i) inline bool EQ(double a, double b) { return fabs(a-b) < 1e-9; } const int INF = 1<<29; typedef long long ll; int K,A,B,N; char a[111],b[111],s[111111],ten[111]; int k,tenk,key[111]; multimap se; multimap::iterator it; long long hash(){ long long res=0,Q=10007,i; FOR(i,k) res=res*Q+key[i]; return res; } void solve(){ int i,j,jj,res; long long h; bool ok; char c; res=0; se.clear(); for(i=0;i+A<=N;i++){ for(k=1;k<=K;k++){ FOR(j,k) key[j]=-1; ok=true; FOR(j,A){ c=(-a[j]+s[i+j]+25)%26; if(key[(i+j)%k]==-1) key[(i+j)%k]=c; else{ if(key[(i+j)%k]!=c){ ok=false; break; } } } if(!ok) continue; se.insert(make_pair(hash(),i)); } } for(k=1;k<=K;k++){ for(i=0;i+B<=N;i++){ FOR(j,k) key[j]=-1; ok=true; FOR(j,B){ c=(-b[j]+s[i+j]+25)%26; if(key[(i+j)%k]==-1) key[(i+j)%k]=c; else{ if(key[(i+j)%k]!=c){ ok=false; break; } } } if(!ok) continue; h=hash(); /*tmp=se.count(hash()); if(res&&tmp){ bool ok=true; FOR(i,k*tenk){ if(key[i%k]+'A'!=ten[i%tenk]){ ok=false; break; } } if(ok) continue; printf("ambiguous\n"); return; } if(tmp&&res==0){ res=1; FOR(j,k) ten[j]=key[j]+'A'; tenk=k; ten[k]='\0'; //printf("%s\n",ten); }*/ it=se.lower_bound(h); while(it!=se.end()&&(*it).first==h){ j=(*it).second; it++; //printf("i:%d j:%d\n",i,j); if(j+A<=i||i+B<=j){ if(res){ bool ok=true; FOR(jj,k*tenk){ if(key[jj%k]+'A'!=ten[jj%tenk]){ ok=false; break; } } if(ok) continue; printf("ambiguous\n"); return; } else{ res=1; FOR(jj,k) ten[jj]=key[jj]+'A'; tenk=k; ten[k]='\0'; } } } } } if(!res){ printf("impossible\n"); return; } int len1 = tenk, len2 = N; FOR(i, len2) { int c = s[i]-'A', d = ten[i%len1]-'A'+1; c = (c-d+26*2) % 26; s[i] = c+'A'; } printf("%s\n", s); } int main() { while(true){ scanf("%d",&K); if(!K) break; scanf("%s",a); scanf("%s",b); scanf("%s",s); A=strlen(a); B=strlen(b); N=strlen(s); solve(); } return 0; }