#include <bits/stdc++.h>
using namespace std;
bool add(char &a, char &b) {
  if ((a != '.') && a != b) {
    return false;
  }
  a = b;
  return true;
}
string a[6];
vector<string> ans;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  for (int i = 0; i < 6; i++) {
    cin >> a[i];
  }
  sort(a, a + 6);
  do {
    if ((a[0].size() + 1) != (a[3].size() + a[4].size())) {
      continue;
    }
    if ((a[1].size() + 1) != (a[2].size() + a[5].size())) {
      continue;
    }
    vector<string> v(a[0].size(), string(a[1].size(), '.'));
    int f = 1;
    for (int i = 0; i < a[0].size(); i++)
      f &= add(v[i][a[2].size() - 1], a[0][i]);
    for (int i = 0; i < a[1].size(); i++)
      f &= add(v[a[3].size() - 1][i], a[1][i]);
    for (int i = 0; i < a[2].size(); i++) f &= add(v[0][i], a[2][i]);
    for (int i = 0; i < a[3].size(); i++) f &= add(v[i][0], a[3][i]);
    for (int i = 0; i < a[4].size(); i++)
      f &= add(v[a[3].size() - 1 + i][a[1].size() - 1], a[4][i]);
    for (int i = 0; i < a[5].size(); i++)
      f &= add(v[a[0].size() - 1][a[2].size() - 1 + i], a[5][i]);
    if (!f) {
      continue;
    }
    if (ans.empty() || v < ans) {
      ans = v;
    }
  } while (next_permutation(a, a + 6));
  if (ans.empty()) {
    cout << "Impossible" << '\n';
  } else {
    for (auto p : ans) {
      cout << p << '\n';
    }
  }
}
