#include <bits/stdc++.h>
using namespace std;
const long double Pi = 3.14159265359;
const long MOD = (long)1e9 + 7;
long long const MAXN = (long long)1e5 + 10;
long long a[6];
string m[6];
string s[6];
string t[6];
int good() {
  if (t[0].size() + t[5].size() - 1 != t[3].size()) return 0;
  if (t[1].size() + t[4].size() - 1 != t[2].size()) return 0;
  if (t[0][0] != t[1][0]) return 0;
  if (t[0][t[0].size() - 1] != t[2][0]) return 0;
  if (t[1][t[1].size() - 1] != t[3][0]) return 0;
  if (t[2][t[2].size() - 1] != t[5][0]) return 0;
  if (t[3][t[3].size() - 1] != t[4][0]) return 0;
  if (t[4][t[4].size() - 1] != t[5][t[5].size() - 1]) return 0;
  if (t[3][t[0].size() - 1] != t[2][t[1].size() - 1]) return 0;
  return 1;
}
string p[40];
string ma[40];
long long siz;
void best(long long fl) {
  string bu = t[0];
  for (int i = 0; i < t[3].size() - t[0].size(); i++) bu += '.';
  p[0] = bu;
  for (int i = 1; i < t[1].size() - 1; i++) {
    bu = "";
    bu += t[1][i];
    for (int j = 0; j < t[0].size() - 2; j++) bu += '.';
    bu += t[2][i];
    for (int j = 0; j < t[3].size() - t[0].size(); j++) bu += '.';
    p[i] = bu;
  }
  p[t[1].size() - 1] = t[3];
  for (int i = t[1].size(); i < t[2].size() - 1; i++) {
    bu = "";
    for (int j = 0; j < t[0].size() - 1; j++) bu += '.';
    bu += t[2][i];
    for (int j = 0; j < t[5].size() - 2; j++) bu += '.';
    bu += t[4][i - t[1].size() + 1];
    p[i] = bu;
  }
  bu = "";
  for (int i = 0; i < t[0].size() - 1; i++) bu += '.';
  bu += t[5];
  p[t[2].size() - 1] = bu;
  if (fl == 0) {
    siz = t[2].size();
    for (int i = 0; i < siz; i++) ma[i] = p[i];
  } else {
    for (int i = 0; i < min(siz, (long long)t[2].size()); i++) {
      if (ma[i] < p[i]) break;
      if (p[i] == ma[i]) continue;
      siz = t[2].size();
      for (int i = 0; i < siz; i++) ma[i] = p[i];
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  for (int i = 0; i < 6; i++) cin >> s[i];
  for (int i = 0; i < 6; i++) a[i] = i + 1;
  long long f = 0;
  for (int i = 0; i < 720; i++) {
    for (int i = 0; i < 6; i++) t[i] = s[a[i] - 1];
    if (good() == 1) {
      best(f);
      f = 1;
    }
    next_permutation(a, a + 6);
  }
  if (f == 0) {
    cout << "Impossible";
    return 0;
  }
  for (int i = 0; i < siz; i++) cout << ma[i] << endl;
  return 0;
}
