#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)

int dx[] = { -1, 0, 1,-1, 1,-1, 0 ,1 };
int dy[] = { -1,-1,-1, 0, 0, 1, 1, 1 };
string field[8];

int count(int x, int y, char s) {
	int sum = 0;
	rep(i, 8) {
		int rx = x, ry = y;
		int score = 0;
		while (true) {
			//??¨?????¢??????????????????????????¢?????????????????????????????????
			if (0 > ry + dy[i] || ry + dy[i] >= 8 || 0 > rx + dx[i] || rx + dx[i] >= 8) {
				score = 0;
				break;
			}
			//?????¨?¢?????????????????????????????????????
			rx += dx[i];
			ry += dy[i];
			//?¬??????????????????????????????¢?¢????
			if(field[ry][rx] == s) score++;
			//??????????????????????????¢????????????
			else if(field[ry][rx]=='.'){
				score = 0;
				break;
			}
			//????????????????????¢????¢????
			else break;
		}
		sum += score;
	}
	return sum;
}

void reverse(int x, int y, char s) {
	rep(i, 8) {
		//cnt?????????????????°?????°????????????????????°
		int rx = x, ry = y, cnt = 0;
		while (true) {
			//??¨?????¢????????§????????????????????????????????????????????????
			if (0 > ry + dy[i] || ry + dy[i] >= 8 || 0 > rx + dx[i] || rx + dx[i] >= 8) break;
			//?????¨?¢????????????????????????????????????????
			rx += dx[i];
			ry += dy[i];
			//?¬???????????????????????????????????¢?????????????????¶????
			if (field[ry][rx] == s) {
				cnt++;
				continue;
			}
			//????????????????????????????????????????????????????????????
			else if (field[ry][rx] == '.') break;
			//??????????????°??\????????¨?????¢???????????????????????????
			else {
				//tx,ty??????????????´????????????????????????????¨??????????
				int tx = x, ty = y;
				//cnt(????????????????????°)????????°????????????
				for (int j	 = 0; j < cnt; j++) {
					//????????¨?????£???????????£???????????????
					if (s == 'x') field[ty + dy[i]][tx + dx[i]] = 'o';
					else field[ty + dy[i]][tx + dx[i]] = 'x';
					tx += dx[i];
					ty += dy[i];
				}
				break;
			}
		}
	}
	//?????????????????????x,y?????§?¨????????????´??°
	if (s == 'x') field[y][x] = 'o';
	else field[y][x] = 'x';
}

int main() {
	//??¨?????¢?????±??\???
	rep(i, 8) getline(cin, field[i]);
	//true????????????????????????false????????£???????????????
	bool turn = true;
	//mx,my????????§???????????¢????????????x,y??§?¨????????´????????????°
	int score, mx, my;
	//flag1???????????????????????????????????°false
	//flag0????????£?????????????????????????????°false?????????????????´??°?????????
	bool flag0 = true, flag1 = true;

	while (flag0 || flag1) {
		int MAX = 0;
		rep(y, 8) {
			rep(x, 8) {
				if (field[y][x] == '.') {
					//????????¨?????£?????§????????????
					//o:?????????x:?????£?????????
					if (turn) {
						score = count(x, y, 'x');
						if (score > MAX) {
							MAX = max(MAX, score);
							mx = x;
							my = y;
						}
					}
					else {
						score = count(x, y, 'o');
						if (score >= MAX) {
							MAX = max(MAX, score);
							mx = x;
							my = y;
						}
					}
				}
			}
		}
		//????????????????????????
		//?????¬????????????????????????????????£?????´?????????
		if (MAX == 0) {
			//????????????
			if (turn) {
				flag1 = false;
				turn = !turn;
				continue;
			}
			else {
				flag0 = false;
				turn = !turn;
				continue;
			}
		}
		else {
			flag1 = true;
			flag0 = true;
		}
		//??¨?????¢??´??°
		if (turn) reverse(mx, my, 'x');
		else reverse(mx, my, 'o');
		//??????????????£
		turn = !turn;
	}
	rep(i, 8) cout << field[i] << endl;
	return 0;
}

Measured memory_bytes: 3228