#include <bits/stdc++.h>
using namespace std;
string w[6];
bool addem(char &a, char b) {
  if (a != '.' && a != b) return 0;
  a = b;
  return 1;
}
int main() {
  int i;
  for (i = 0; i < 6; i++) cin >> w[i];
  sort(w, w + 6);
  vector<string> ans;
  do {
    if (w[1].size() != w[0].size() + w[2].size() - 1) continue;
    if (w[4].size() != w[3].size() + w[5].size() - 1) continue;
    vector<string> tp(w[4].size(), string(w[1].size(), '.'));
    bool ryt = 1;
    for (i = 0; i < w[0].size(); i++) ryt &= addem(tp[0][i], w[0][i]);
    for (i = 0; i < w[1].size(); i++)
      ryt &= addem(tp[w[3].size() - 1][i], w[1][i]);
    for (i = 0; i < w[2].size(); i++)
      ryt &= addem(tp[w[4].size() - 1][i + w[0].size() - 1], w[2][i]);
    for (i = 0; i < w[3].size(); i++) ryt &= addem(tp[i][0], w[3][i]);
    for (i = 0; i < w[4].size(); i++)
      ryt &= addem(tp[i][w[0].size() - 1], w[4][i]);
    for (i = 0; i < w[5].size(); i++)
      ryt &= addem(tp[w[3].size() - 1 + i][w[1].size() - 1], w[5][i]);
    if (ryt && (ans.empty() || ans > tp)) ans = tp;
  } while (next_permutation(w, w + 6));
  if (ans.empty())
    cout << "Impossible";
  else {
    for (i = 0; i < ans.size(); i++) cout << ans[i] << endl;
  }
  return 0;
}
