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