#include <bits/stdc++.h>
namespace ProblemE {
using namespace std;
class Solution {
 public:
  void MedianString() {
    int k;
    string s;
    string t;
    cin >> k >> s >> t;
    Base26Integer low(s);
    Base26Integer high(t);
    Base26Integer difference = high - low;
    Base26Integer midpoint = DivideByTwo(difference);
    Base26Integer median = low + midpoint;
    cout << median.AsString() << '\n';
  }

 private:
  class Base26Integer {
   public:
    static const int Base = 26;
    Base26Integer(string& v) : a(move(v)) { assert(a.size() >= 1); }
    Base26Integer operator+(Base26Integer b) {
      string result;
      result.reserve(a.size() + 1);
      int carry = 0;
      int i = a.size() - 1;
      int j = b.size() - 1;
      while (i >= 0) {
        int paddedDigit = j < 0 ? 0 : b.ExtractDigit(j);
        int sum = ExtractDigit(i) + paddedDigit + carry;
        if (sum >= 26) {
          carry = 1;
          result += ToBase26(sum - Base);
        } else {
          carry = 0;
          result += ToBase26(sum);
        }
        --i;
        --j;
      }
      if (carry == 1) {
        result += ToBase26(carry);
      }
      reverse(result.begin(), result.end());
      return {result};
    }
    Base26Integer operator-(Base26Integer b) {
      assert(a.size() == b.size());
      string result;
      int carry = 0;
      for (int i = a.size() - 1; i >= 0; --i) {
        int digit = ExtractDigit(i) + carry;
        if (digit < b.ExtractDigit(i)) {
          carry = -1;
          result += ToBase26(26 + digit - b.ExtractDigit(i));
        } else {
          carry = 0;
          result += ToBase26(digit - b.ExtractDigit(i));
        }
      }
      if (result.back() == 'a') {
        result.pop_back();
      }
      reverse(result.begin(), result.end());
      return {result};
    }
    int ExtractDigit(int i) { return a[i] - 'a'; }
    const string& AsString() { return a; }
    int size() { return (int)a.size(); }
    static char ToBase26(int v) { return 'a' + v; }

   private:
    string a;
  };
  static Base26Integer DivideByTwo(Base26Integer a) {
    string result;
    result.reserve(a.size());
    int remaining = 0;
    for (int i = 0; i < a.size(); ++i) {
      int digit = a.ExtractDigit(i) + Base26Integer::Base * remaining;
      result += Base26Integer::ToBase26(digit / 2);
      remaining = digit % 2;
    }
    return {result};
  }
};
}  // namespace ProblemE
int main() {
  ProblemE::Solution s;
  s.MedianString();
}
