#include <bits/stdc++.h>
using namespace std;
bool check(int first, int second) {
  return first >= 0 && first < 2 && second >= 0 && second < 13;
}
vector<pair<int, int> > dir = {{1, 0}, {-1, 0},  {0, 1},  {0, -1},
                               {1, 1}, {-1, -1}, {1, -1}, {-1, 1}};
int main() {
  string s;
  int i1, i2;
  cin >> s;
  for (int i = (0); i < (s.size()); i++)
    for (int j = (i + 1); j < (s.size()); j++)
      if (s[i] == s[j]) {
        i1 = i;
        i2 = j;
      }
  if (i2 - i1 == 1) {
    cout << "Impossible" << '\n';
    return 0;
  }
  s = s.substr(i1, s.size() - i1) + s.substr(0, i1);
  i2 = i2 - i1;
  i1 = 0;
  vector<string> res(2);
  res[0] = res[1] = "+++++++++++++";
  res[1][(i2 - 1) / 2] = s[0];
  int second = (i2 - 1) / 2, dod = -1, first = 1;
  for (int i = (1); i < (s.size()); i++) {
    if (i == i2) {
      for (int j = (0); j < (dir.size()); j++)
        if (check(first + dir[j].first, second + dir[j].second) &&
            res[first + dir[j].first][second + dir[j].second] == s[i]) {
          second = second + dir[j].second;
          first = first + dir[j].first;
          if (second - 1 >= 0 && res[first][second - 1] == '+')
            dod = -1;
          else
            dod = 1;
          break;
        }
      continue;
    }
    second += dod;
    if (!check(first, second)) {
      second -= dod;
      first ^= 1;
      dod *= -1;
    }
    res[first][second] = s[i];
  }
  for (int i = (0); i < (2); i++) cout << res[i] << '\n';
  return 0;
}
