#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
if (!(cin >> N)) return 0;
string A, B, C; // A = S_S (숭돌), B = S_K (고돌), C = S_H (한돌)
cin >> A >> B >> C;
// 빠른 불가능 판정: 두 사람이 제출한 문자열이 완전히 같으면 두 사람의 최종 점수는 항상 같다.
if (A == B || A == C || B == C) {
cout << -1 << '\n';
return 0;
}
// 각 패턴별 인덱스 수집
vector<int> eq, ab, bc, ac, distinct;
eq.reserve(N); ab.reserve(N); bc.reserve(N); ac.reserve(N); distinct.reserve(N);
for (int i = 0; i < N; ++i) {
char a = A[i], b = B[i], c = C[i];
if (a == b && b == c) {
eq.push_back(i); // 모두 같음: (0,0) 외에는 불가능
} else if (a == b) {
ab.push_back(i); // a=b!=c : (0,+1) 또는 (0,-1)
} else if (b == c) {
bc.push_back(i); // b=c!=a : (+1,0) 또는 (-1,0)
} else if (a == c) {
ac.push_back(i); // a=c!=b : (+1,-1) 또는 (-1,+1)
} else {
distinct.push_back(i); // 모두 다름: (+1,0), (-1,+1), (0,-1)
}
}
long long c2 = (long long)ab.size(); // a=b
long long c3 = (long long)bc.size(); // b=c
long long c4 = (long long)ac.size(); // a=c
long long c1 = (long long)distinct.size();
// y(=K-H)를 +로 만들 수 있는 자원이 하나도 없으면 불가능
if (c2 + c1 + c4 == 0) {
cout << -1 << '\n';
return 0;
}
// 선택할 개수들
long long p = c2; // ab에서 (0,+1)로 모두 사용 (y 버퍼를 많이 확보해두면 유리하고 x에는 영향 없음)
long long v1 = 0; // distinct에서 (-1,+1) 사용 개수
long long u = 0; // ac에서 (-1,+1) 사용 개수
// p가 0이라면 y를 올리기 위해 v1 또는 u를 1개는 써야 한다.
if (p == 0) {
if (c1 == 0 && c4 == 0) {
cout << -1 << '\n';
return 0;
}
if (c4 > 0) u = 1; // x에 덜 불리(-1)하므로 가능하면 ac의 (-1,+1)부터 사용
else v1 = 1; // ac가 없다면 distinct의 (-1,+1)
}
long long y_now = p + v1 + u; // 현재 y = K-H
long long x_pre = -v1 - u; // 현재 x = S-K (아직 +로 올리기 전)
long long need_x = 1 - x_pre; // 목표 x>=1을 위한 추가 필요량
long long avail_u1 = c1 - v1; // distinct에서 (+1,0)로 쓸 수 있는 남은 개수
long long avail_r = c3; // bc에서 (+1,0)
long long max_t = min(c4 - u, max(0LL, y_now - 1)); // ac에서 (+1,-1)로 쓸 수 있는 상한( y≥1 유지 )
long long a1 = min(avail_u1, need_x); need_x -= a1; // distinct의 (+1,0)
long long a3 = min(avail_r , need_x); need_x -= a3; // bc의 (+1,0)
long long a4 = min(max_t , need_x); need_x -= a4; // ac의 (+1,-1)
if (need_x > 0) {
cout << -1 << '\n';
return 0;
}
// 실제 정답 문자열 구성
string S(N, '?');
auto pick_other = [&](char a, char b, char c)->char {
for (char ch = 'a'; ch <= 'z'; ++ch) {
if (ch != a && ch != b && ch != c) return ch;
}
return 'a'; // 도달 불가이지만 형식상
};
// 1) a=b(!=c) : 전부 (0,+1)로 사용 (p == c2)
for (int idx : ab) S[idx] = A[idx];
// 2) b=c(!=a) : 앞에서 a3개는 (+1,0) 위해 A[idx], 나머지는 이후에 'other'
for (int i = 0; i < (int)bc.size(); ++i) {
int idx = bc[i];
if (i < a3) S[idx] = A[idx]; // (+1,0)
}
// 3) a=c(!=b) : 앞에서 u개는 (-1,+1) 위해 B[idx], 다음 a4개는 (+1,-1) 위해 A[idx]
for (int i = 0; i < (int)ac.size(); ++i) {
int idx = ac[i];
if (i < u) S[idx] = B[idx]; // (-1,+1)
else if (i < u + a4) S[idx] = A[idx]; // (+1,-1)
// 나머지는 이후에 'other'
}
// 4) 모두 다름 : 앞에서 v1개는 (-1,+1) 위해 B[idx], 다음 a1개는 (+1,0) 위해 A[idx]
for (int i = 0; i < (int)distinct.size(); ++i) {
int idx = distinct[i];
if (i < v1) S[idx] = B[idx]; // (-1,+1)
else if (i < v1 + a1) S[idx] = A[idx]; // (+1,0)
// 나머지는 이후에 'other'
}
// 5) 나머지 미배정 위치는 모두 'other' 문자로 채움 (어느 누구에게도 점수 주지 않음)
for (int i = 0; i < N; ++i) {
if (S[i] == '?') S[i] = pick_other(A[i], B[i], C[i]);
}
// 안전 검증: S가 정말로 S>K>H인지 확인. 아니면 -1 출력.
int scS = 0, scK = 0, scH = 0;
for (int i = 0; i < N; ++i) {
if (S[i] == A[i]) ++scS;
if (S[i] == B[i]) ++scK;
if (S[i] == C[i]) ++scH;
}
if (!(scS > scK && scK > scH)) {
cout << -1 << '\n';
return 0;
}
cout << S << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAKICAgIGludCBOOwogICAgaWYgKCEoY2luID4+IE4pKSByZXR1cm4gMDsKICAgIHN0cmluZyBBLCBCLCBDOyAvLyBBID0gU19TICjsiK3rj4wpLCBCID0gU19LICjqs6Drj4wpLCBDID0gU19IICjtlZzrj4wpCiAgICBjaW4gPj4gQSA+PiBCID4+IEM7CgogICAgLy8g67mg66W4IOu2iOqwgOuKpSDtjJDsoJU6IOuRkCDsgqzrnozsnbQg7KCc7Lac7ZWcIOusuOyekOyXtOydtCDsmYTsoITtnogg6rCZ7Jy866m0IOuRkCDsgqzrnozsnZgg7LWc7KKFIOygkOyImOuKlCDtla3sg4Eg6rCZ64ukLgogICAgaWYgKEEgPT0gQiB8fCBBID09IEMgfHwgQiA9PSBDKSB7CiAgICAgICAgY291dCA8PCAtMSA8PCAnXG4nOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIOqwgSDtjKjthLTrs4Qg7J24642x7IqkIOyImOynkQogICAgdmVjdG9yPGludD4gZXEsIGFiLCBiYywgYWMsIGRpc3RpbmN0OwogICAgZXEucmVzZXJ2ZShOKTsgYWIucmVzZXJ2ZShOKTsgYmMucmVzZXJ2ZShOKTsgYWMucmVzZXJ2ZShOKTsgZGlzdGluY3QucmVzZXJ2ZShOKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkgewogICAgICAgIGNoYXIgYSA9IEFbaV0sIGIgPSBCW2ldLCBjID0gQ1tpXTsKICAgICAgICBpZiAoYSA9PSBiICYmIGIgPT0gYykgewogICAgICAgICAgICBlcS5wdXNoX2JhY2soaSk7ICAgICAgICAgICAgICAgICAgIC8vIOuqqOuRkCDqsJnsnYw6ICgwLDApIOyZuOyXkOuKlCDrtojqsIDriqUKICAgICAgICB9IGVsc2UgaWYgKGEgPT0gYikgewogICAgICAgICAgICBhYi5wdXNoX2JhY2soaSk7ICAgICAgICAgICAgICAgICAgIC8vIGE9YiE9YyA6ICgwLCsxKSDrmJDripQgKDAsLTEpCiAgICAgICAgfSBlbHNlIGlmIChiID09IGMpIHsKICAgICAgICAgICAgYmMucHVzaF9iYWNrKGkpOyAgICAgICAgICAgICAgICAgICAvLyBiPWMhPWEgOiAoKzEsMCkg65iQ64qUICgtMSwwKQogICAgICAgIH0gZWxzZSBpZiAoYSA9PSBjKSB7CiAgICAgICAgICAgIGFjLnB1c2hfYmFjayhpKTsgICAgICAgICAgICAgICAgICAgLy8gYT1jIT1iIDogKCsxLC0xKSDrmJDripQgKC0xLCsxKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRpc3RpbmN0LnB1c2hfYmFjayhpKTsgICAgICAgICAgICAgLy8g66qo65GQIOuLpOumhDogKCsxLDApLCAoLTEsKzEpLCAoMCwtMSkKICAgICAgICB9CiAgICB9CgogICAgbG9uZyBsb25nIGMyID0gKGxvbmcgbG9uZylhYi5zaXplKCk7IC8vIGE9YgogICAgbG9uZyBsb25nIGMzID0gKGxvbmcgbG9uZyliYy5zaXplKCk7IC8vIGI9YwogICAgbG9uZyBsb25nIGM0ID0gKGxvbmcgbG9uZylhYy5zaXplKCk7IC8vIGE9YwogICAgbG9uZyBsb25nIGMxID0gKGxvbmcgbG9uZylkaXN0aW5jdC5zaXplKCk7CgogICAgLy8geSg9Sy1IKeulvCAr66GcIOunjOuTpCDsiJgg7J6I64qUIOyekOybkOydtCDtlZjrgpjrj4Qg7JeG7Jy866m0IOu2iOqwgOuKpQogICAgaWYgKGMyICsgYzEgKyBjNCA9PSAwKSB7CiAgICAgICAgY291dCA8PCAtMSA8PCAnXG4nOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIOyEoO2Dne2VoCDqsJzsiJjrk6QKICAgIGxvbmcgbG9uZyBwID0gYzI7ICAgICAgICAvLyBhYuyXkOyEnCAoMCwrMSnroZwg66qo65GQIOyCrOyaqSAoeSDrsoTtjbzrpbwg66eO7J20IO2ZleuztO2VtOuRkOuptCDsnKDrpqztlZjqs6AgeOyXkOuKlCDsmIHtlqUg7JeG7J2MKQogICAgbG9uZyBsb25nIHYxID0gMDsgICAgICAgIC8vIGRpc3RpbmN07JeQ7IScICgtMSwrMSkg7IKs7JqpIOqwnOyImAogICAgbG9uZyBsb25nIHUgID0gMDsgICAgICAgIC8vIGFj7JeQ7IScICgtMSwrMSkg7IKs7JqpIOqwnOyImAogICAgLy8gcOqwgCAw7J20652866m0IHnrpbwg7Jis66as6riwIOychO2VtCB2MSDrmJDripQgdeulvCAx6rCc64qUIOyNqOyVvCDtlZzri6QuCiAgICBpZiAocCA9PSAwKSB7CiAgICAgICAgaWYgKGMxID09IDAgJiYgYzQgPT0gMCkgewogICAgICAgICAgICBjb3V0IDw8IC0xIDw8ICdcbic7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoYzQgPiAwKSB1ID0gMTsgICAgICAgICAgIC8vIHjsl5Ag642cIOu2iOumrCgtMSntlZjrr4DroZwg6rCA64ql7ZWY66m0IGFj7J2YICgtMSwrMSnrtoDthLAg7IKs7JqpCiAgICAgICAgZWxzZSB2MSA9IDE7ICAgICAgICAgICAgICAgICAvLyBhY+qwgCDsl4bri6TrqbQgZGlzdGluY3TsnZggKC0xLCsxKQogICAgfQoKICAgIGxvbmcgbG9uZyB5X25vdyA9IHAgKyB2MSArIHU7ICAgIC8vIO2YhOyerCB5ID0gSy1ICiAgICBsb25nIGxvbmcgeF9wcmUgPSAtdjEgLSB1OyAgICAgICAvLyDtmITsnqwgeCA9IFMtSyAo7JWE7KeBICvroZwg7Jis66as6riwIOyghCkKICAgIGxvbmcgbG9uZyBuZWVkX3ggPSAxIC0geF9wcmU7ICAgIC8vIOuqqe2RnCB4Pj0x7J2EIOychO2VnCDstpTqsIAg7ZWE7JqU65+JCgogICAgbG9uZyBsb25nIGF2YWlsX3UxID0gYzEgLSB2MTsgICAgLy8gZGlzdGluY3Tsl5DshJwgKCsxLDAp66GcIOyTuCDsiJgg7J6I64qUIOuCqOydgCDqsJzsiJgKICAgIGxvbmcgbG9uZyBhdmFpbF9yICA9IGMzOyAgICAgICAgIC8vIGJj7JeQ7IScICgrMSwwKQogICAgbG9uZyBsb25nIG1heF90ICAgID0gbWluKGM0IC0gdSwgbWF4KDBMTCwgeV9ub3cgLSAxKSk7IC8vIGFj7JeQ7IScICgrMSwtMSnroZwg7JO4IOyImCDsnojripQg7IOB7ZWcKCB54omlMSDsnKDsp4AgKQoKICAgIGxvbmcgbG9uZyBhMSA9IG1pbihhdmFpbF91MSwgbmVlZF94KTsgbmVlZF94IC09IGExOyAgICAvLyBkaXN0aW5jdOydmCAoKzEsMCkKICAgIGxvbmcgbG9uZyBhMyA9IG1pbihhdmFpbF9yICwgbmVlZF94KTsgbmVlZF94IC09IGEzOyAgICAvLyBiY+ydmCAoKzEsMCkKICAgIGxvbmcgbG9uZyBhNCA9IG1pbihtYXhfdCAgICwgbmVlZF94KTsgbmVlZF94IC09IGE0OyAgICAvLyBhY+ydmCAoKzEsLTEpCgogICAgaWYgKG5lZWRfeCA+IDApIHsKICAgICAgICBjb3V0IDw8IC0xIDw8ICdcbic7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8g7Iuk7KCcIOygleuLtSDrrLjsnpDsl7Qg6rWs7ISxCiAgICBzdHJpbmcgUyhOLCAnPycpOwoKICAgIGF1dG8gcGlja19vdGhlciA9IFsmXShjaGFyIGEsIGNoYXIgYiwgY2hhciBjKS0+Y2hhciB7CiAgICAgICAgZm9yIChjaGFyIGNoID0gJ2EnOyBjaCA8PSAneic7ICsrY2gpIHsKICAgICAgICAgICAgaWYgKGNoICE9IGEgJiYgY2ggIT0gYiAmJiBjaCAhPSBjKSByZXR1cm4gY2g7CiAgICAgICAgfQogICAgICAgIHJldHVybiAnYSc7IC8vIOuPhOuLrCDrtojqsIDsnbTsp4Drp4wg7ZiV7Iud7IOBCiAgICB9OwoKICAgIC8vIDEpIGE9YighPWMpIDog7KCE67aAICgwLCsxKeuhnCDsgqzsmqkgKHAgPT0gYzIpCiAgICBmb3IgKGludCBpZHggOiBhYikgU1tpZHhdID0gQVtpZHhdOwoKICAgIC8vIDIpIGI9YyghPWEpIDog7JWe7JeQ7IScIGEz6rCc64qUICgrMSwwKSDsnITtlbQgQVtpZHhdLCDrgpjrqLjsp4DripQg7J207ZuE7JeQICdvdGhlcicKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludCliYy5zaXplKCk7ICsraSkgewogICAgICAgIGludCBpZHggPSBiY1tpXTsKICAgICAgICBpZiAoaSA8IGEzKSBTW2lkeF0gPSBBW2lkeF07ICAgICAgICAvLyAoKzEsMCkKICAgIH0KCiAgICAvLyAzKSBhPWMoIT1iKSA6IOyVnuyXkOyEnCB16rCc64qUICgtMSwrMSkg7JyE7ZW0IEJbaWR4XSwg64uk7J2MIGE06rCc64qUICgrMSwtMSkg7JyE7ZW0IEFbaWR4XQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KWFjLnNpemUoKTsgKytpKSB7CiAgICAgICAgaW50IGlkeCA9IGFjW2ldOwogICAgICAgIGlmIChpIDwgdSkgU1tpZHhdID0gQltpZHhdOyAgICAgICAgICAgICAgICAgIC8vICgtMSwrMSkKICAgICAgICBlbHNlIGlmIChpIDwgdSArIGE0KSBTW2lkeF0gPSBBW2lkeF07ICAgICAgICAvLyAoKzEsLTEpCiAgICAgICAgLy8g64KY66i47KeA64qUIOydtO2bhOyXkCAnb3RoZXInCiAgICB9CgogICAgLy8gNCkg66qo65GQIOuLpOumhCA6IOyVnuyXkOyEnCB2MeqwnOuKlCAoLTEsKzEpIOychO2VtCBCW2lkeF0sIOuLpOydjCBhMeqwnOuKlCAoKzEsMCkg7JyE7ZW0IEFbaWR4XQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KWRpc3RpbmN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgaW50IGlkeCA9IGRpc3RpbmN0W2ldOwogICAgICAgIGlmIChpIDwgdjEpIFNbaWR4XSA9IEJbaWR4XTsgICAgICAgICAgICAgICAgIC8vICgtMSwrMSkKICAgICAgICBlbHNlIGlmIChpIDwgdjEgKyBhMSkgU1tpZHhdID0gQVtpZHhdOyAgICAgICAvLyAoKzEsMCkKICAgICAgICAvLyDrgpjrqLjsp4DripQg7J207ZuE7JeQICdvdGhlcicKICAgIH0KCiAgICAvLyA1KSDrgpjrqLjsp4Ag66+467Cw7KCVIOychOy5mOuKlCDrqqjrkZAgJ290aGVyJyDrrLjsnpDroZwg7LGE7JuAICjslrTripAg64iE6rWs7JeQ6rKM64+EIOygkOyImCDso7zsp4Ag7JWK7J2MKQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpIHsKICAgICAgICBpZiAoU1tpXSA9PSAnPycpIFNbaV0gPSBwaWNrX290aGVyKEFbaV0sIEJbaV0sIENbaV0pOwogICAgfQoKICAgIC8vIOyViOyghCDqsoDspp06IFPqsIAg7KCV66eQ66GcIFM+Sz5I7J247KeAIO2ZleyduC4g7JWE64uI66m0IC0xIOy2nOugpS4KICAgIGludCBzY1MgPSAwLCBzY0sgPSAwLCBzY0ggPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpIHsKICAgICAgICBpZiAoU1tpXSA9PSBBW2ldKSArK3NjUzsKICAgICAgICBpZiAoU1tpXSA9PSBCW2ldKSArK3NjSzsKICAgICAgICBpZiAoU1tpXSA9PSBDW2ldKSArK3NjSDsKICAgIH0KICAgIGlmICghKHNjUyA+IHNjSyAmJiBzY0sgPiBzY0gpKSB7CiAgICAgICAgY291dCA8PCAtMSA8PCAnXG4nOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGNvdXQgPDwgUyA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0=