#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define mid ((l+r)>>1)
const int M=1e3+20,P=1e9+7;
struct Task{
	int n;
	char s[M][M];
	void init(){
		scanf("%d",&n);
		for(int i=1;i<=n;++i)
			for(int j=1;j<=n;++j)
				s[i][j]='.';
	}
	void run(){
		init();
		if (n==2){
			cout<<-1<<endl;
			return ;
		}
		if (n%3==0){
			for(int i=1;i<=n/3;++i){
				int ca=3*(i-1);
				s[ca+1][ca+1]=s[ca+1][ca+2]='a';
				s[ca+1][ca+3]=s[ca+2][ca+3]='b';
				s[ca+2][ca+1]=s[ca+3][ca+1]='c';
				s[ca+3][ca+2]=s[ca+3][ca+3]='d';
			}
			for(int i=1;i<=n;++i){
				for(int j=1;j<=n;++j)
					putchar(s[i][j]);
				putchar('\n');
			}
			return;
		}
		if (n%6==0||n%6==4||n%6==5){
			for(int i=1;i<=n/6;++i){
				int ca=6*(i-1);
				s[ca+1][ca+1]=s[ca+2][ca+1]='a';
				s[ca+1][ca+4]=s[ca+2][ca+4]='b';
				s[ca+1][ca+5]=s[ca+1][ca+6]='c';
				s[ca+2][ca+5]=s[ca+2][ca+6]='d';
				s[ca+3][ca+2]=s[ca+4][ca+2]='e';
				s[ca+3][ca+3]=s[ca+3][ca+4]='f';
				s[ca+3][ca+5]=s[ca+4][ca+5]='g';
				s[ca+4][ca+3]=s[ca+4][ca+4]='h';
				s[ca+5][ca+1]=s[ca+5][ca+2]='i';
				s[ca+6][ca+1]=s[ca+6][ca+2]='j';
				s[ca+5][ca+3]=s[ca+6][ca+3]='k';
				s[ca+5][ca+6]=s[ca+6][ca+6]='l';
			}
			int ca=6*(n/6);
			if (n%6==4){
				s[ca+1][ca+1]=s[ca+1][ca+2]='a';
				s[ca+2][ca+1]=s[ca+2][ca+2]='b';
				s[ca+1][ca+3]=s[ca+2][ca+3]='c';
				s[ca+1][ca+4]=s[ca+2][ca+4]='d';
				s[ca+3][ca+1]=s[ca+4][ca+1]='e';
				s[ca+3][ca+2]=s[ca+4][ca+2]='f';
				s[ca+3][ca+3]=s[ca+3][ca+4]='g';
				s[ca+4][ca+3]=s[ca+4][ca+4]='h';
			}
			if (n%6==5){
				s[ca+1][ca+1]=s[ca+2][ca+1]='a';
				s[ca+3][ca+1]=s[ca+4][ca+1]='b';
				s[ca+5][ca+1]=s[ca+5][ca+2]='c';
				s[ca+5][ca+3]=s[ca+5][ca+4]='d';
				s[ca+5][ca+5]=s[ca+4][ca+5]='e';
				s[ca+3][ca+5]=s[ca+2][ca+5]='f';
				s[ca+1][ca+5]=s[ca+1][ca+4]='g';
				s[ca+1][ca+3]=s[ca+1][ca+2]='h';
				s[ca+2][ca+2]=s[ca+2][ca+3]='i';
				s[ca+3][ca+4]=s[ca+4][ca+4]='j';
			}
			for(int i=1;i<=n;++i){
				for(int j=1;j<=n;++j)
					putchar(s[i][j]);
				putchar('\n');
			}
			return;
		}
		if (n%6==1||n%6==2){
			for(int i=1;i<=n/6-1;++i){
				int ca=6*(i-1);
				s[ca+1][ca+1]=s[ca+2][ca+1]='a';
				s[ca+1][ca+4]=s[ca+2][ca+4]='b';
				s[ca+1][ca+5]=s[ca+1][ca+6]='c';
				s[ca+2][ca+5]=s[ca+2][ca+6]='d';
				s[ca+3][ca+2]=s[ca+4][ca+2]='e';
				s[ca+3][ca+3]=s[ca+3][ca+4]='f';
				s[ca+3][ca+5]=s[ca+4][ca+5]='g';
				s[ca+4][ca+3]=s[ca+4][ca+4]='h';
				s[ca+5][ca+1]=s[ca+5][ca+2]='i';
				s[ca+6][ca+1]=s[ca+6][ca+2]='j';
				s[ca+5][ca+3]=s[ca+6][ca+3]='k';
				s[ca+5][ca+6]=s[ca+6][ca+6]='l';
			}
			int ca=6*(n/6-1);
			if (n%6==1){
				s[ca+1][ca+1]=s[ca+1][ca+2]='a';
				s[ca+1][ca+3]=s[ca+1][ca+4]='b';
				s[ca+1][ca+6]=s[ca+2][ca+6]='c';
				s[ca+2][ca+1]=s[ca+3][ca+1]='d';
				s[ca+4][ca+1]=s[ca+5][ca+1]='e';
				s[ca+2][ca+2]=s[ca+2][ca+3]='f';
				s[ca+3][ca+3]=s[ca+3][ca+4]='g';
				s[ca+4][ca+5]=s[ca+5][ca+5]='h';
				s[ca+6][ca+5]=s[ca+6][ca+6]='i';
				s[ca+6][ca+2]=s[ca+7][ca+2]='j';
				s[ca+7][ca+4]=s[ca+7][ca+5]='k';
				s[ca+7][ca+6]=s[ca+7][ca+7]='l';
				s[ca+3][ca+7]=s[ca+4][ca+7]='m';
				s[ca+5][ca+7]=s[ca+6][ca+7]='n';
			}
			if (n%6==2){
				s[ca+1][ca+1]=s[ca+1][ca+2]='a';
				s[ca+2][ca+1]=s[ca+2][ca+2]='b';
				s[ca+1][ca+3]=s[ca+2][ca+3]='c';
				s[ca+1][ca+4]=s[ca+2][ca+4]='d';
				s[ca+3][ca+1]=s[ca+4][ca+1]='e';
				s[ca+3][ca+2]=s[ca+4][ca+2]='f';
				s[ca+3][ca+3]=s[ca+3][ca+4]='g';
				s[ca+4][ca+3]=s[ca+4][ca+4]='h';
				ca+=4;
				s[ca+1][ca+1]=s[ca+1][ca+2]='a';
				s[ca+2][ca+1]=s[ca+2][ca+2]='b';
				s[ca+1][ca+3]=s[ca+2][ca+3]='c';
				s[ca+1][ca+4]=s[ca+2][ca+4]='d';
				s[ca+3][ca+1]=s[ca+4][ca+1]='e';
				s[ca+3][ca+2]=s[ca+4][ca+2]='f';
				s[ca+3][ca+3]=s[ca+3][ca+4]='g';
				s[ca+4][ca+3]=s[ca+4][ca+4]='h';
			}
			for(int i=1;i<=n;++i){
				for(int j=1;j<=n;++j)
					putchar(s[i][j]);
				putchar('\n');
			}
		}
	}
}t;
int main(){
	t.run();
	return 0;
}

Measured memory_bytes: 2176