//#include "pch.h"
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <bitset>
#include <limits.h>
#include <string>
#include <deque>
#include <cmath>
#include <bitset>

using namespace std;
typedef long long ll;
typedef pair<int, int> P;

#define rip(i, n, s) for (int i = (s);i < (int)( n ); i++)
#define mpa make_pair
#define all(a) a.begin(), a.end()

template<typename T>
void vdeb(vector<T> &da) {
	int size = da.size();
	for (int i = 0;i < size;i++) {
		if (i == size - 1) {
			cout << da[i] << endl;
		}
		else {
			cout << da[i] << ' ';
		}
	}
}
template<typename T>
void vvdeb(vector<T> &da) {
	int size = da.size();
	for (int i = 0;i < size;i++) {
		vdeb(da[i]);
	}
}

int main() {
	int n;cin >> n;
	string bb = "";
	rip(i, n, 0) bb += '.';
	vector<string> ans(n, bb);
	if (n == 2) {
		cout << -1 << endl;
		return 0;
	}
	if (n % 3 == 0) {
		for (int i = 0;i < n;i += 3) {
			ans[i][i] = 'a';ans[i][i + 1] = 'a';ans[i + 1][i + 2] = 'a';ans[i + 2][i + 2] = 'a';
		}
	}
	else if (n % 6 == 5) {
		for (int i = 0;i < n;i += 3) {
			if (i == (n - 5) / 2) {
				ans[i][i] = 'a';ans[i][i + 1] = 'a';ans[i][i + 2] = 'b';ans[i][i + 3] = 'b';
				ans[i + 4][i + 1] = 'b';ans[i + 4][i + 2] = 'b';ans[i + 4][i + 3] = 'a';ans[i + 4][i + 4] = 'a';
				ans[i + 1][i] = 'b';ans[i + 2][i] = 'b';ans[i + 3][i] = 'a';ans[i + 4][i] = 'a';
				ans[i][i + 4] = 'a';ans[i + 1][i + 4] = 'a';ans[i + 2][i + 4] = 'b';ans[i + 3][i + 4] = 'b';
				ans[i + 1][i + 1] = 'c';ans[i + 1][i + 2] = 'c';ans[i + 2][i + 3] = 'c';ans[i + 3][i + 3] = 'c';
				i += 2;
			}
			else {
				ans[i][i] = 'a';ans[i][i + 1] = 'a';ans[i + 1][i + 2] = 'a';ans[i + 2][i + 2] = 'a';
				int k = n - i - 3;
				ans[i][k] = 'a';ans[i][k + 1] = 'a';ans[i + 2][k + 1] = 'a';ans[i + 2][k + 2] = 'a';
				ans[i][k + 2] = 'b';ans[i + 1][k + 2] = 'b';ans[i + 1][k] = 'b';ans[i + 2][k] = 'b';
			}
		}
	}
	else if (n % 6 == 4) {
		for (int i = 0;i < n;i += 3) {
			if (i == (n - 4) / 2) {
				ans[i][i] = 'a';ans[i][i + 1] = 'a';ans[i][i + 2] = 'b';ans[i][i + 3] = 'c';
				ans[i + 3][i] = 'a';ans[i + 3][i + 1] = 'b';ans[i + 3][i + 2] = 'c';ans[i + 3][i + 3] = 'c';
				ans[i + 1][i] = 'c';ans[i + 1][i + 1] = 'c';ans[i + 1][i + 2] = 'b';ans[i + 1][i + 3] = 'c';
				ans[i + 2][i] = 'a';ans[i + 2][i + 1] = 'b';ans[i + 2][i + 2] = 'a';ans[i + 2][i + 3] = 'a';
				i += 1;
			}
			else {
				ans[i][i] = 'a';ans[i][i + 1] = 'a';ans[i + 1][i + 2] = 'a';ans[i + 2][i + 2] = 'a';
				int k = n - i - 3;
				ans[i][k] = 'a';ans[i][k + 1] = 'a';ans[i + 2][k + 1] = 'a';ans[i + 2][k + 2] = 'a';
				ans[i][k + 2] = 'b';ans[i + 1][k + 2] = 'b';ans[i + 1][k] = 'b';ans[i + 2][k] = 'b';
			}
		}
	}
	else if (n % 6 == 2) {
		for (int i = 0;i < n;i += 3) {
			if (i == (n - 8) / 2) {
				rip(j, i + 7, i + 1) { ans[i][j] = 'a';ans[i + 7][j] = 'a';ans[j][i] = 'a';ans[j][i + 7] = 'a'; }
				ans[i][i + 3] = 'b';ans[i][i + 4] = 'b';ans[i + 7][i + 3] = 'b';ans[i + 7][i + 4] = 'b';
				ans[i + 3][i] = 'b';ans[i + 4][i] = 'b';ans[i + 3][i + 7] = 'b';ans[i + 4][i + 7
				] = 'b';
				rip(j, 2, 0) { ans[i + 3 + j * 3][i + 2 + j * 3] = 'c';ans[i + 3 + j * 3][i + 3 + j * 3] = 'c'; }
				rip(j, 2, 0) { ans[i + 1 + j * 3][i + 1 + j * 3] = 'c';ans[i + 2 + j * 3][i + 1 + j * 3] = 'c'; }
				i += 5;
			}
			else {
				ans[i][i] = 'a';ans[i][i + 1] = 'a';ans[i + 1][i + 2] = 'a';ans[i + 2][i + 2] = 'a';
				int k = n - i - 3;
				ans[i][k] = 'a';ans[i][k + 1] = 'a';ans[i + 2][k + 1] = 'a';ans[i + 2][k + 2] = 'a';
				ans[i][k + 2] = 'b';ans[i + 1][k + 2] = 'b';ans[i + 1][k] = 'b';ans[i + 2][k] = 'b';
			}
		}
	}
	else if (n % 6 == 1) {
		for (int i = 0;i < n;i += 3) {
			if (i == (n - 7) / 2) {
				rip(j, i + 7, i + 1) { ans[i][j] = 'a';ans[j][i] = 'a';}
				ans[i][i + 3] = 'b';ans[i][i + 4] = 'b';
				ans[i + 3][i] = 'b';ans[i + 4][i] = 'b';
				rip(j, 2, 0) { ans[i + 1][i + 2+j] = 'c';ans[i + 1][i + 4+j] = 'd'; 
				ans[i + 6][i + 2 + j] = 'c';ans[i + 6][i + 4 + j] = 'd';
				ans[i + 2 + j][i + 1] = 'c';ans[i + 4 + j][i + 1] = 'd';
				ans[i + 2 + j][i + 6] = 'c';ans[i + 4 + j][i + 6] = 'd';
				}
				i += 4;
			}
			else {
				ans[i][i] = 'a';ans[i][i + 1] = 'a';ans[i + 1][i + 2] = 'a';ans[i + 2][i + 2] = 'a';
				int k = n - i - 3;
				ans[i][k] = 'a';ans[i][k + 1] = 'a';ans[i + 2][k + 1] = 'a';ans[i + 2][k + 2] = 'a';
				ans[i][k + 2] = 'b';ans[i + 1][k + 2] = 'b';ans[i + 1][k] = 'b';ans[i + 2][k] = 'b';
			}
		}
	}
	else {
		cout << -1 << endl;
		return 0;
	}
	rip(i, n, 0) {
		cout << ans[i] << endl;
	}
}

Measured memory_bytes: 2304