#include <bits/stdc++.h>
using namespace std;
char in[30];
const string nnew[4] = {
    {'*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*'},
    {'*', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '*'},
    {'*', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '*'},
    {'*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*',
     '*'}};
string g[4];
int movx[] = {1, -1, 1, -1, -1, 1, 0, 0};
int movy[] = {1, 1, -1, -1, 0, 0, -1, 1};
bool mark[300];
bool gen(int i, int j, int p, int it) {
  if (p == 27) return true;
  for (int k = 0; k < 8; k++) {
    int x = i + movx[k], y = j + movy[k];
    if (it - (k > 3) && g[x][y] == '-' && !mark[(int)in[p]]) {
      g[x][y] = in[p];
      mark[(int)in[p]] = true;
      if (gen(x, y, p + 1, it - (k > 3))) return true;
      g[x][y] = '-';
      mark[(int)in[p]] = false;
    }
    if (it - (k > 3) && g[x][y] == in[p])
      if (gen(x, y, p + 1, it - (k > 3))) return true;
  }
  return false;
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> in;
  for (int j = 1; j < 14; j++)
    for (int i = 1; i < 3; i++) {
      for (int k = 0; k < 4; k++) g[k] = nnew[k];
      g[i][j] = in[0];
      if (gen(i, j, 1, 5)) {
        cout << g[1].substr(1, 13) << "\n" << g[2].substr(1, 13);
        return 0;
      }
    }
  cout << "Impossible";
}
