#include <bits/stdc++.h>
using namespace std;
template <typename T>
void _R(T &x) {
  cin >> x;
}
void _R(int &x) { scanf("%d", &x); }
void _R(long long &x) { scanf("%" PRId64, &x); }
void _R(double &x) { scanf("%lf", &x); }
void _R(char &x) { scanf(" %c", &x); }
void _R(char *x) { scanf("%s", x); }
void R() {}
template <typename T, typename... U>
void R(T &head, U &...tail) {
  _R(head);
  R(tail...);
}
template <typename T>
void _W(const T &x) {
  cout << x;
}
void _W(const int &x) { printf("%d", x); }
template <typename T>
void _W(const vector<T> &x) {
  for (auto i = x.cbegin(); i != x.cend(); i++) {
    if (i != x.cbegin()) putchar(' ');
    _W(*i);
  }
}
void W() {}
template <typename T, typename... U>
void W(const T &head, const U &...tail) {
  _W(head);
  putchar(sizeof...(tail) ? ' ' : '\n');
  W(tail...);
}
pair<int, int> f(int x, int y) {
  if (x == 0) {
    if (y == 0)
      return {1, 0};
    else
      return {x, y - 1};
  } else {
    if (y == 12)
      return {0, 12};
    else
      return {x, y + 1};
  }
}
char s[30], t[2][14];
bool chk(int x, int y) {
  bool vis[26] = {};
  int sx[26], sy[26];
  for (int i = 0; i < int(27); i++) {
    int c = s[i] - 'A';
    if (vis[c]) continue;
    vis[c] = 1;
    sx[c] = x;
    sy[c] = y;
    t[x][y] = s[i];
    tie(x, y) = f(x, y);
  };
  for (int i = 0; i < int(26); i++) {
    int c1 = s[i] - 'A';
    int c2 = s[i + 1] - 'A';
    int x1 = sx[c1], y1 = sy[c1];
    int x2 = sx[c2], y2 = sy[c2];
    int dx = abs(x1 - x2);
    int dy = abs(y1 - y2);
    if (max(dx, dy) != 1) return 0;
  }
  return 1;
}
int main() {
  R(s);
  for (int i = 0; i < int(2); i++)
    for (int j = 0; j < int(13); j++)
      if (chk(i, j)) {
        W(t[0]);
        W(t[1]);
        return 0;
      }
  W("Impossible");
  return 0;
}
