#include <bits/stdc++.h>
#define syosu(x) fixed<<setprecision(x)
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> P;
typedef pair<double,double> pdd;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<string> vs;
typedef vector<P> vp;
typedef vector<vp> vvp;
typedef vector<pll> vpll;
typedef pair<int,P> pip;
typedef vector<pip> vip;
const int inf=1<<30;
const ll INF=1ll<<60;
const double pi=acos(-1);
const double eps=1e-8;
const ll mod=1e9+7;
const int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};

int n;

string s3[3]={
	"aab",
	"c.b",
	"cdd"
};
string s4[4]={
	"aacd",
	"bbcd",
	"efgg",
	"efhh"
};
string s5[5]={
	"aabee",
	"c.bff",
	"cdd.j",
	"gh..j",
	"ghii."
};
string s7[7]={
	"aabee..",
	"c.b..ff",
	"cdd.j..",
	"g..ij..",
	"g..il..",
	".h..lmm",
	".hkk.nn"
};

void f(vi a){
	vs b(n,string(n,'.'));
	int t=0;
	for(auto i:a){
		for(int j=0;j<i;j++) for(int k=0;k<i;k++){
			char c;
			if(i==3) c=s3[j][k];
			if(i==4) c=s4[j][k];
			if(i==5) c=s5[j][k];
			if(i==7) c=s7[j][k];
			b[t+j][t+k]=c;
		}
		t+=i;
	}
	for(int i=0;i<n;i++) cout<<b[i]<<endl;
}

int main(){
	cin>>n;
	if(n==2){
		cout<<-1<<endl;
		return 0;
	}
	if(n%3==0){
		vi a(n/3,3);
		f(a);
		return 0;
	}
	for(int i=0;4*i<=n;i++) for(int j=0;5*j<=n-4*i;j++) if((n-4*i-5*j)%7==0){
		int k=(n-4*i-5*j)/7;
		vi a(i+j+k);
		for(int l=0;l<i;l++) a[l]=4;
		for(int l=0;l<j;l++) a[l+i]=5;
		for(int l=0;l<k;l++) a[l+i+j]=7;
		f(a);
		return 0;
	}
	while(1);
}