#include <bits/stdc++.h>
using namespace std;
long long base = 10;
long long base_size = 1;
string ANS;
class Big_int {
 public:
  long long size;
  vector<long long> arr;
  Big_int(const string &b) {
    string s1 = b;
    reverse(s1.begin(), s1.end());
    while (!s1[s1.size() - 1]) {
      s1.pop_back();
    }
    reverse(s1.begin(), s1.end());
    arr.resize(s1.size(), 0);
    for (long long i = 0; i < s1.size(); i++) {
      arr[i] = s1[s1.size() - 1 - i] - '0';
    }
    size = s1.size();
  }
  Big_int() {}
  long long operator>(const Big_int &c) const {
    vector<long long> a = this->arr;
    vector<long long> b = c.arr;
    if (a.size() > b.size()) {
      return 1;
    }
    if (b.size() > a.size()) {
      return 0;
    }
    for (long long i = a.size() - 1; i >= 0; i--) {
      if (a[i] > b[i]) {
        return 1;
      }
      if (a[i] < b[i]) {
        return 0;
      }
    }
    return 0;
  }
  long long operator<(const Big_int &c) const { return (c > *this); }
  void operator=(const Big_int &b) {
    arr = b.arr;
    size = b.size;
  }
  long long operator==(const Big_int &c) const {
    return !(c > *this) && !(c < *this);
  }
  Big_int operator+(const Big_int &b) const {
    Big_int c;
    vector<long long> arr1 = this->arr;
    vector<long long> arr2 = b.arr;
    vector<long long> arr3(max(arr1.size(), arr2.size()) + 1, 0);
    if (arr1.size() > arr2.size()) {
      while (arr2.size() != arr1.size()) {
        arr2.push_back(0);
      }
    } else {
      while (arr2.size() != arr1.size()) {
        arr1.push_back(0);
      }
    }
    for (long long i = 0; i < arr1.size(); i++) {
      arr3[i] = arr1[i] + arr2[i] + arr3[i];
      arr3[i + 1] = arr3[i] / base;
      arr3[i] = arr3[i] % base;
    }
    if (!arr3.back()) {
      arr3.pop_back();
    }
    c.arr = arr3;
    c.size = arr3.size();
    return c;
  }
  Big_int operator-(const Big_int &b) const {
    Big_int c;
    vector<long long> arr1 = this->arr;
    vector<long long> arr2 = b.arr;
    for (long long i = 0; i < arr2.size(); i++) {
      arr2[i] *= -1;
    }
    vector<long long> arr3(max(arr1.size(), arr2.size()) + 1, 0);
    if (arr1.size() > arr2.size()) {
      while (arr2.size() != arr1.size()) {
        arr2.push_back(0);
      }
    } else {
      while (arr2.size() != arr1.size()) {
        arr1.push_back(0);
      }
    }
    for (long long i = 0; i < arr1.size(); i++) {
      arr3[i] = arr1[i] + arr2[i] + arr3[i];
      if (arr3[i] < 0) {
        arr3[i] += base;
        arr3[i + 1]--;
      }
    }
    for (long long i = 0; i < arr3.size(); i++) {
      arr3[i] = (arr3[i] + base) % base;
    }
    while (!arr3.back()) {
      arr3.pop_back();
    }
    if (arr3.size() == 0) arr3.push_back(0);
    c.arr = arr3;
    c.size = arr3.size();
    return c;
  }
  Big_int operator*(const Big_int &b) const {
    Big_int c;
    vector<long long> arr1 = this->arr;
    vector<long long> arr2 = b.arr;
    long long n = arr1.size();
    long long m = arr2.size();
    vector<long long> arr3(n + m, 0);
    if ((arr1.size() == 1 && arr1[0] == 0) ||
        (arr2.size() == 1 && arr2[0] == 0)) {
      arr3.resize(1, 0);
      c.arr = arr3;
      c.size = 1;
      return c;
    }
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < m; j++) {
        arr3[i + j] += arr1[i] * arr2[j];
        arr3[i + j + 1] += arr3[i + j] / base;
        arr3[i + j] %= base;
      }
    }
    for (long long i = 0; i < n + m - 1; i++) {
      arr3[i + 1] += arr3[i] / base;
      arr3[i] %= base;
    }
    if (!arr3[n + m - 1]) {
      arr3.pop_back();
    }
    c.size = arr3.size();
    c.arr = arr3;
    return c;
  }
  Big_int operator/(const long long &k) const {
    Big_int c;
    vector<long long> arr1 = this->arr;
    vector<long long> arr3;
    reverse(arr1.begin(), arr1.end());
    long long now = 0;
    bool b = 0;
    for (long long i = 0; i < arr1.size(); i++) {
      now *= base;
      now += arr1[i];
      if (now >= k) {
        arr3.push_back(now / k);
        now %= k;
        b = 1;
      } else {
        if (b) {
          arr3.push_back(0);
        }
      }
    }
    if (arr3.size() == 0) {
      arr3.push_back(0);
    }
    reverse(arr3.begin(), arr3.end());
    c.arr = arr3;
    c.size = arr3.size();
    return c;
  }
  long long operator%(const long long &k) const {
    Big_int c;
    vector<long long> arr1 = this->arr;
    vector<long long> arr3;
    reverse(arr1.begin(), arr1.end());
    long long now = 0;
    bool b = 0;
    for (long long i = 0; i < arr1.size(); i++) {
      now *= base;
      now += arr1[i];
      if (now >= k) {
        arr3.push_back(now / k);
        now %= k;
        b = 1;
      } else {
        if (b) {
          arr3.push_back(0);
        }
      }
    }
    reverse(arr3.begin(), arr3.end());
    c.arr = arr3;
    c.size = arr3.size();
    return now;
  }
  Big_int operator/(const Big_int &b) const {
    Big_int a = *this;
    Big_int ed("1");
    Big_int zer("0");
    Big_int l = zer;
    Big_int r;
    if (a > b) {
      r = a;
    } else {
      r = b;
    }
    r = r + ed;
    Big_int l1 = l + ed;
    while (!(r == l1)) {
      Big_int m = l + r;
      m = m / 2;
      l1 = l + ed;
      Big_int mult = m * b;
      if (mult > a) {
        r = m;
      } else {
        l = m;
      }
    }
    return l;
  }
  Big_int operator%(const Big_int &b) const {
    Big_int a = *(this);
    Big_int c = a / b;
    Big_int ans = c * b;
    Big_int Ans = a - ans;
    return Ans;
  }
  friend istream &operator>>(istream &read, Big_int &a) {
    string b;
    read >> b;
    reverse(b.begin(), b.end());
    a.arr.resize(((b.size() - 1) / base_size) + 1, 0);
    for (long long i = 0; i < b.size() / base_size; i++) {
      string now = b.substr(base_size * i, base_size);
      reverse(now.begin(), now.end());
      a.arr[i] = now[0] - 'a';
    }
    string c;
    for (long long i = base_size * ((b.size() / base_size)); i < b.size();
         i++) {
      c.push_back(b[i]);
    }
    reverse(c.begin(), c.end());
    if (c.size()) {
      a.arr.back() = stoll(c);
    }
    a.size = b.size();
    return read;
  }
  friend ostream &operator<<(ostream &print, const Big_int &a) {
    ANS.push_back((char)(a.arr[a.arr.size() - 1] + 'a'));
    for (long long i = 1; i < a.arr.size(); i++) {
      ANS.push_back((char)(a.arr[a.arr.size() - i - 1] + 'a'));
    };
    return print;
  }
};
signed main() {
  long long k;
  cin >> k;
  base = 26;
  Big_int s, t;
  Big_int one("1");
  cin >> s >> t;
  Big_int c = s + t;
  c = c / 2;
  cout << c;
  for (long long i = 0; i < k - ANS.size(); i++) {
    cout << "a";
  }
  cout << ANS;
}
