#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
string SS, SK, SH;
cin >> SS >> SK >> SH;
string ans = SS; // 기본적으로 숭돌이 답으로 채움
int scoreS=0, scoreK=0, scoreH=0;
auto recompute = [&](string &A){
int s=0,k=0,h=0;
for(int i=0;i<N;i++){
if(A[i]==SS[i]) s++;
if(A[i]==SK[i]) k++;
if(A[i]==SH[i]) h++;
}
return tuple<int,int,int>(s,k,h);
};
tie(scoreS,scoreK,scoreH) = recompute(ans);
// 첫 패스: 셋 다 같으면 전부 틀리게
for(int i=0;i<N;i++){
if(SS[i]==SK[i] && SK[i]==SH[i]){
char c = 'a';
if(c==SS[i]) c='b';
ans[i]=c;
}
}
tie(scoreS,scoreK,scoreH) = recompute(ans);
// 조정: scoreS > scoreK > scoreH 만들어야 함
// 반복적으로 시도
bool changed=true;
while(!(scoreS>scoreK && scoreK>scoreH) && changed){
changed=false;
for(int i=0;i<N;i++){
int oldS=(ans[i]==SS[i]);
int oldK=(ans[i]==SK[i]);
int oldH=(ans[i]==SH[i]);
for(char c : {SS[i],SK[i],SH[i],'a'}){
if(c==ans[i]) continue;
int newS=scoreS-oldS+(c==SS[i]);
int newK=scoreK-oldK+(c==SK[i]);
int newH=scoreH-oldH+(c==SH[i]);
if(newS>newK && newK>newH){
ans[i]=c;
scoreS=newS; scoreK=newK; scoreH=newH;
changed=true;
break;
}
}
if(changed) break;
}
}
if(scoreS>scoreK && scoreK>scoreH){
cout<<ans<<"\n";
} else {
cout<<-1<<"\n";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IE47CiAgICBjaW4gPj4gTjsKICAgIHN0cmluZyBTUywgU0ssIFNIOwogICAgY2luID4+IFNTID4+IFNLID4+IFNIOwoKICAgIHN0cmluZyBhbnMgPSBTUzsgLy8g6riw67O47KCB7Jy866GcIOyIreuPjOydtCDri7XsnLzroZwg7LGE7JuACiAgICBpbnQgc2NvcmVTPTAsIHNjb3JlSz0wLCBzY29yZUg9MDsKCiAgICBhdXRvIHJlY29tcHV0ZSA9IFsmXShzdHJpbmcgJkEpewogICAgICAgIGludCBzPTAsaz0wLGg9MDsKICAgICAgICBmb3IoaW50IGk9MDtpPE47aSsrKXsKICAgICAgICAgICAgaWYoQVtpXT09U1NbaV0pIHMrKzsKICAgICAgICAgICAgaWYoQVtpXT09U0tbaV0pIGsrKzsKICAgICAgICAgICAgaWYoQVtpXT09U0hbaV0pIGgrKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHR1cGxlPGludCxpbnQsaW50PihzLGssaCk7CiAgICB9OwoKICAgIHRpZShzY29yZVMsc2NvcmVLLHNjb3JlSCkgPSByZWNvbXB1dGUoYW5zKTsKCiAgICAvLyDssqsg7Yyo7IqkOiDshYsg64ukIOqwmeycvOuptCDsoITrtoAg7YuA66as6rKMCiAgICBmb3IoaW50IGk9MDtpPE47aSsrKXsKICAgICAgICBpZihTU1tpXT09U0tbaV0gJiYgU0tbaV09PVNIW2ldKXsKICAgICAgICAgICAgY2hhciBjID0gJ2EnOwogICAgICAgICAgICBpZihjPT1TU1tpXSkgYz0nYic7CiAgICAgICAgICAgIGFuc1tpXT1jOwogICAgICAgIH0KICAgIH0KICAgIHRpZShzY29yZVMsc2NvcmVLLHNjb3JlSCkgPSByZWNvbXB1dGUoYW5zKTsKCiAgICAvLyDsobDsoJU6IHNjb3JlUyA+IHNjb3JlSyA+IHNjb3JlSCDrp4zrk6TslrTslbwg7ZWoCiAgICAvLyDrsJjrs7XsoIHsnLzroZwg7Iuc64+ECiAgICBib29sIGNoYW5nZWQ9dHJ1ZTsKICAgIHdoaWxlKCEoc2NvcmVTPnNjb3JlSyAmJiBzY29yZUs+c2NvcmVIKSAmJiBjaGFuZ2VkKXsKICAgICAgICBjaGFuZ2VkPWZhbHNlOwogICAgICAgIGZvcihpbnQgaT0wO2k8TjtpKyspewogICAgICAgICAgICBpbnQgb2xkUz0oYW5zW2ldPT1TU1tpXSk7CiAgICAgICAgICAgIGludCBvbGRLPShhbnNbaV09PVNLW2ldKTsKICAgICAgICAgICAgaW50IG9sZEg9KGFuc1tpXT09U0hbaV0pOwogICAgICAgICAgICBmb3IoY2hhciBjIDoge1NTW2ldLFNLW2ldLFNIW2ldLCdhJ30pewogICAgICAgICAgICAgICAgaWYoYz09YW5zW2ldKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGludCBuZXdTPXNjb3JlUy1vbGRTKyhjPT1TU1tpXSk7CiAgICAgICAgICAgICAgICBpbnQgbmV3Sz1zY29yZUstb2xkSysoYz09U0tbaV0pOwogICAgICAgICAgICAgICAgaW50IG5ld0g9c2NvcmVILW9sZEgrKGM9PVNIW2ldKTsKICAgICAgICAgICAgICAgIGlmKG5ld1M+bmV3SyAmJiBuZXdLPm5ld0gpewogICAgICAgICAgICAgICAgICAgIGFuc1tpXT1jOwogICAgICAgICAgICAgICAgICAgIHNjb3JlUz1uZXdTOyBzY29yZUs9bmV3Szsgc2NvcmVIPW5ld0g7CiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZD10cnVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGNoYW5nZWQpIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBpZihzY29yZVM+c2NvcmVLICYmIHNjb3JlSz5zY29yZUgpewogICAgICAgIGNvdXQ8PGFuczw8IlxuIjsKICAgIH0gZWxzZSB7CiAgICAgICAgY291dDw8LTE8PCJcbiI7CiAgICB9Cn0=