#include <bits/stdc++.h>
int comp(const void *a, const void *b) { return *(int *)a - *(int *)b; }
int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }
char a[100010], b[100010], c;
int k1[10], k2[10], l, zMax, zk, zd;
int main() {
  while (1) {
    scanf("%c", &c);
    if (c < '0' || c > '9') break;
    k1[c - '0']++;
    k2[c - '0']++;
    a[l] = b[l] = c;
    l++;
  }
  a[l] = b[l] = 0;
  for (int i = 0; i <= k1[0]; i++) {
    k1[0] -= i;
    k2[0] -= i;
    for (int j = 1; j < 10; j++) {
      if (!k1[j] || !k2[10 - j]) continue;
      k1[j]--;
      k2[10 - j]--;
      int z = i + 1;
      for (int k = 0; k < 10; k++) z += min(k1[k], k2[9 - k]);
      if (z > zMax) {
        zMax = z;
        zk = i;
        zd = j;
      }
      k1[j]++;
      k2[10 - j]++;
    }
    if (i > zMax) {
      zMax = i;
      zk = i;
    }
    k1[0] += i;
    k2[0] += i;
  }
  if (zMax) {
    l--;
    for (int i = 0; i < zk; i++) {
      a[l] = b[l] = '0';
      l--;
      k1[0]--;
      k2[0]--;
    }
    if (zd) {
      a[l] = '0' + zd;
      b[l] = '0' + 10 - zd;
      l--;
      k1[zd]--;
      k2[10 - zd]--;
    }
    for (int i = 0; i < 10; i++) {
      int k = min(k1[i], k2[9 - i]);
      for (int j = 0; j < k; j++) {
        a[l] = '0' + i;
        b[l] = '0' + 9 - i;
        l--;
      }
      k1[i] -= k;
      k2[9 - i] -= k;
    }
    int l1 = l, l2 = l;
    for (int i = 0; i < 10; i++) {
      while (k1[i]--) a[l1--] = '0' + i;
      while (k2[i]--) b[l2--] = '0' + i;
    }
  }
  printf("%s\n%s", a, b);
  return 0;
}
