#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
#include <map>
#include <queue>
#include <iomanip>
#include <set>
#include <tuple>
#define mkp make_pair
#define mkt make_tuple
#define rep(i,n) for(int i = 0; i < (n); ++i)
using namespace std;
typedef long long ll;
const ll MOD=1e9+7;

int N;

string four[]={"aabc",
               "ddbc",
               "efgg",
               "efhh"};
string five[]={"aabbc",
               "dee.c",
               "d..fg",
               "h..fg",
               "hiijj"};

string three[]={"aa.",
                "..b",
                "..b"};

string seven[]={"aabbcc.",
                ".dd.eef",
                "g..h..f",
                "g..h..i",
                "j....ki",
                "j....kl",
                ".mmnn.l"};

int main(){
  cin>>N;

  if(N==2) cout<<-1<<endl;
  else if(N==3){
    rep(i,N) cout<<three[i]<<endl;
  }else if(N==6){
    rep(i,N){
      rep(j,N){
        if(i<=2&&j<=2) cout<<three[i][j];
        else if(i>2&&j>2) cout<<three[i-3][j-3];
        else cout<<'.';
      }
      cout<<endl;
    }
  }else if(N==7){
    rep(i,N) cout<<seven[i]<<endl;
  }else if(N==11){
    rep(i,N){
      rep(j,N){
        if(i<=3&&j<=3) cout<<four[i][j];
        else if(i>3&&j>3) cout<<seven[i-4][j-4];
        else cout<<'.';
      }
      cout<<endl;
    }
  }else{
    int num=0;
    rep(i,N){
      int rest=N-4*i;
      if(rest%5==0){
        num=i;
        break;
      }
    }

    rep(i,N){
      rep(j,N){
        if(i<4*num&&j<4*num&&i/4==j/4) cout<<four[i%4][j%4];
        else if(i>=4*num&&j>=4*num&&(i-4*num)/5==(j-4*num)/5){
          int si=i-4*num;
          int sj=j-4*num;
          cout<<five[si%5][sj%5];
        }else cout<<'.';
      }
      cout<<endl;
    }
  }


  return 0;
}
