#include <bits/stdc++.h>
using namespace std;
template <typename T>
ostream& operator<<(ostream& os, vector<T> a) {
  os << "( ";
  for (T& first : a) os << first << " ";
  os << ")" << endl;
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, set<T> a) {
  os << "( ";
  for (T first : a) os << first << " ";
  os << ")" << endl;
  return os;
}
template <typename X, typename Y>
ostream& operator<<(ostream& os, pair<X, Y> a) {
  os << "(" << a.first << " " << a.second << ") ";
  os.flush();
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, complex<T> a) {
  os << "(r=" << a.real() << " i=" << a.imag() << ") ";
  os.flush();
  return os;
}
template <typename X, typename Y>
pair<X, Y>& operator-=(pair<X, Y>& A, pair<X, Y> B) {
  A.first -= B.first;
  A.second -= B.second;
  return A;
}
template <typename X, typename Y>
pair<X, Y>& operator+=(pair<X, Y>& A, pair<X, Y> B) {
  A.first += B.first;
  A.second += B.second;
  return A;
}
template <typename X, typename Y, typename Z>
pair<X, Y>& operator*=(pair<X, Y>& A, Z n) {
  A.first *= n;
  A.second *= n;
  return A;
}
template <typename X, typename Y>
X operator*(pair<X, Y> A, pair<X, Y> B) {
  return A.first * B.first + A.second * B.second;
}
template <typename X, typename Y>
X operator^(pair<X, Y> A, pair<X, Y> B) {
  return A.first * B.second - A.second * B.first;
}
template <typename X, typename Y>
X operator^(X a, Y b) {
  return a ^= b;
}
template <typename X, typename Y>
X operator+(X a, Y b) {
  return a += b;
}
template <typename X, typename Y>
X operator-(X a, Y b) {
  return a -= b;
}
template <typename X, typename Y>
X operator*(X a, Y b) {
  return a *= b;
}
template <typename X, typename Y>
X operator/(X a, Y b) {
  return a /= b;
}
const int base = 1000000007;
long long power(long long a, long long n, long long mod = base) {
  a = a < 0 ? (mod - (-a) % mod) : (a % mod);
  long long r = 1;
  while (n) {
    if (n & 1) r = r * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return r;
}
string add(string a, string b) {
  string c;
  c.resize(a.size());
  int k = 0;
  for (int i = 0; i < a.size(); ++i) {
    k += a[i] + b[i] - 'a' - 'a';
    c[i] = k % 26 + 'a';
    k /= 26;
  }
  if (k) c.push_back(k + 'a');
  return c;
}
string div(string a, int k) {
  string s;
  s.resize(a.size());
  int r = 0;
  for (int i = a.size(); i--;) {
    r = r * 26 + a[i] - 'a';
    s[i] = r / k + 'a';
    r %= k;
  }
  return s;
}
int32_t main(int32_t argc, char** argv) {
  if (argc > 2) {
    freopen(argv[1], "r", stdin);
    freopen(argv[2], "w", stdout);
  }
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  string s, t;
  cin >> n >> s >> t;
  reverse(s.begin(), s.end());
  reverse(t.begin(), t.end());
  string a = add(s, t);
  if (0)
    cout << "add(s, t)"
         << " = " << add(s, t) << endl;
  a = div(a, 2);
  if (0)
    cout << "a"
         << " = " << a << endl;
  if (a.size() > n) a.pop_back();
  reverse(a.begin(), a.end());
  cout << a;
  if (0)
    cout << "Time"
         << " = " << ((long long)(clock() * 1000 / CLOCKS_PER_SEC)) << endl;
}
