#include <iostream>
#include <cstring>
using namespace std;
const int MAX_LENGTH = 100;
int main() {
char array[MAX_LENGTH + 1], mt[MAX_LENGTH + 1][MAX_LENGTH + 1], secMt[MAX_LENGTH + 1][MAX_LENGTH + 1];
int counter = 0, lengthFin = 0;
while (cin.getline(array, MAX_LENGTH)) {
int length = strlen(array);
// cout << array << " " << length<< "<-\n";
for (int j = 0; j < length; ++j) {
mt[counter][j] = array[j];
// cout << mt[counter][j] << "<->" << array[j]<< "\n";
}
++counter;
lengthFin = length;
}
/*for(int i = 0; i < lengthFin; ++i) {
for (int j = 0; j < lengthFin; ++j) {
cout << mt[i][j] <<" ";
}
cout <<"\n";
}
*/
int linie = lengthFin - 1, coloana = 0;
for (int i = 0; i < lengthFin; ++i, --linie) {
for (int j = 0; j < lengthFin; ++j) {
// cout << mt[j][i] <<",";
if ((mt[j][i] >= 'a' && mt[j][i] <= 'z') || (mt[j][i] >= 'A' && mt[j][i] <= 'Z')) {
secMt[linie][j] = mt[j][i];
}
}
// cout <<" \n";
}
for (int i = 0 ; i < lengthFin; ++i) {
for (int j = 0 ; j < lengthFin; ++j) {
cout << secMt[i][j];
}
cout <<".\n";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhfTEVOR1RIID0gMTAwOwoKCmludCBtYWluKCkgewoJY2hhciBhcnJheVtNQVhfTEVOR1RIICsgMV0sIG10W01BWF9MRU5HVEggKyAxXVtNQVhfTEVOR1RIICsgMV0sIHNlY010W01BWF9MRU5HVEggKyAxXVtNQVhfTEVOR1RIICsgMV07CglpbnQgY291bnRlciA9IDAsIGxlbmd0aEZpbiA9IDA7CgkKCQoJd2hpbGUgKGNpbi5nZXRsaW5lKGFycmF5LCBNQVhfTEVOR1RIKSkgewoJCWludCBsZW5ndGggPSBzdHJsZW4oYXJyYXkpOwoJLy8JY291dCA8PCBhcnJheSA8PCAiICIgPDwgbGVuZ3RoPDwgIjwtXG4iOwoJCQlmb3IgKGludCBqID0gMDsgaiA8IGxlbmd0aDsgKytqKSB7CgkJCQltdFtjb3VudGVyXVtqXSA9IGFycmF5W2pdOwoJCQkvLwljb3V0IDw8IG10W2NvdW50ZXJdW2pdIDw8ICI8LT4iIDw8IGFycmF5W2pdPDwgIlxuIjsKCQkJfQoJCSsrY291bnRlcjsgCgkJbGVuZ3RoRmluID0gbGVuZ3RoOwoJfQoJCgkKCS8qZm9yKGludCBpID0gMDsgaSA8IGxlbmd0aEZpbjsgKytpKSB7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBsZW5ndGhGaW47ICsraikgewoJCQljb3V0IDw8IG10W2ldW2pdIDw8IiAiOwoJCX0KCQljb3V0IDw8IlxuIjsKCX0KCSovCgkKCQoJaW50IGxpbmllID0gbGVuZ3RoRmluIC0gMSwgY29sb2FuYSA9IDA7Cglmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aEZpbjsgKytpLCAtLWxpbmllKSB7CgkJCgkJZm9yIChpbnQgaiA9IDA7IGogPCBsZW5ndGhGaW47ICsraikgewoJCQkKCQkvLwljb3V0IDw8IG10W2pdW2ldIDw8IiwiOwoJCQlpZiAoKG10W2pdW2ldID49ICdhJyAmJiBtdFtqXVtpXSA8PSAneicpIHx8IChtdFtqXVtpXSA+PSAnQScgJiYgbXRbal1baV0gPD0gJ1onKSkgewoJCQkJCgkJCQlzZWNNdFtsaW5pZV1bal0gPSBtdFtqXVtpXTsKCQkJfQoJCX0KCS8vCWNvdXQgPDwiIFxuIjsKCX0KCQoJZm9yIChpbnQgaSA9IDAgOyBpIDwgbGVuZ3RoRmluOyArK2kpIHsKCQlmb3IgKGludCBqID0gMCA7IGogPCBsZW5ndGhGaW47ICsraikgewoJCQljb3V0IDw8IHNlY010W2ldW2pdOwoJCX0KCQljb3V0IDw8Ii5cbiI7Cgl9CgkKCQoJcmV0dXJuIDA7Cn0=