fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. ios::sync_with_stdio(false);
  6. cin.tie(nullptr);
  7.  
  8. int N;
  9. cin >> N;
  10. string SS, SK, SH;
  11. cin >> SS >> SK >> SH;
  12.  
  13. int idxS = -1, idxK = -1;
  14.  
  15. for (int i = 0; i < N; i++) {
  16. char a = SS[i], b = SK[i], c = SH[i];
  17. if (a != b && b != c) {
  18. // 셋 다 다름: 이 칸은 S-only도 되고 K-only도 됨.
  19. if (idxS == -1) idxS = i;
  20. else if (idxK == -1) idxK = i;
  21. } else if (b == c && a != b) {
  22. // K=H ≠ S => S-only 가능
  23. if (idxS == -1) idxS = i;
  24. } else if (a == c && b != a) {
  25. // S=H ≠ K => K-only 가능
  26. if (idxK == -1) idxK = i;
  27. }
  28. }
  29.  
  30. if (idxS == -1 || idxK == -1) {
  31. cout << -1 << "\n";
  32. return 0;
  33. }
  34.  
  35. string S(N, 'a');
  36. // 우선 아무도 점수 못 받게
  37. for (int i = 0; i < N; i++) {
  38. char a = SS[i], b = SK[i], c = SH[i];
  39. char pick = 'a';
  40. if (pick == a || pick == b || pick == c) {
  41. for (char ch = 'a'; ch <= 'z'; ch++) {
  42. if (ch != a && ch != b && ch != c) {
  43. pick = ch;
  44. break;
  45. }
  46. }
  47. }
  48. S[i] = pick;
  49. }
  50.  
  51. // S-only 자리
  52. S[idxS] = SS[idxS];
  53. // K-only 자리 (S-only랑 겹치지 않음 보장됨)
  54. S[idxK] = SK[idxK];
  55.  
  56. cout << S << "\n";
  57. return 0;
  58. }
Success #stdin #stdout 0.01s 5288KB
stdin
5
aaaaa
aaaab
aaaac
stdout
-1