#include <bits/stdc++.h>
using namespace std;
int F[10], G[10];
int getbest() {
  int res = 0;
  for (int i = 0; i <= 9; i++) res += min(F[i], G[9 - i]);
  int fz = F[0] - min(F[0], G[9]), gz = G[0] - min(G[0], F[9]);
  return res + min(fz, gz);
}
int main() {
  ios::sync_with_stdio(false);
  string s;
  cin >> s;
  for (int i = 0; i < s.size(); i++) {
    F[s[i] - '0']++;
    G[s[i] - '0']++;
  }
  string res, fes;
  int best = -1, u, l;
  for (int i = 1; i < 10; i++) {
    int j = 10 - i;
    if (F[i] == 0 or G[j] == 0) continue;
    F[i]--, G[j]--;
    if (best < getbest()) {
      best = getbest();
      u = i, l = j;
    }
    F[i]++, G[j]++;
  }
  if (best == -1) {
    while (F[0]--) res.append(1, '0');
    while (G[0]--) fes.append(1, '0');
    for (int i = 1; i < 10; i++) {
      while (F[i]--) res.append(1, '0' + i);
    }
    for (int i = 1; i < 10; i++) {
      while (G[i]--) fes.append(1, '0' + i);
    }
    reverse(res.begin(), res.end());
    reverse(fes.begin(), fes.end());
    cout << res << endl << fes << endl;
    return 0;
  }
  F[u]--;
  G[l]--;
  int fz = F[0] - min(F[0], G[9]), gz = G[0] - min(G[0], F[9]);
  fz = min(fz, gz);
  gz = fz;
  F[0] -= fz, G[0] -= gz;
  while (fz--) res.append(1, '0');
  while (gz--) fes.append(1, '0');
  res.append(1, '0' + u);
  fes.append(1, '0' + l);
  for (int i = 0; i <= 9; i++) {
    while (F[i] > 0 and G[9 - i] > 0) {
      res.append(1, '0' + i);
      fes.append(1, '0' + 9 - i);
      F[i]--, G[9 - i]--;
    }
  }
  for (int i = 0; i < 10; i++) {
    while (F[i]--) res.append(1, '0' + i);
  }
  for (int i = 0; i < 10; i++) {
    while (G[i]--) fes.append(1, '0' + i);
  }
  reverse(res.begin(), res.end());
  reverse(fes.begin(), fes.end());
  cout << res << endl << fes << endl;
  return 0;
}
