#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<iomanip>
#include<cmath>


#define REP(i,n) for (int i = 0; (i) < (n); ++ (i))
#define FOR(i,n) for (int i = 1; (i) <= (n); ++ (i))
#define dump(x)  cout << #x << " = " << (x) << endl;
#define pb push_back
#define int long long
//#define lint long long

const int INF = 1e18;
const int MOD = 1e9+7;
//const lint LINF = 1e18;
const double eps = 0.000000001;//もとの値の10^(-16)まで

using namespace std;

//typedef pair<int, int> P;
//priority_queue< P, vector<P>, greater<P> > q;//ダイクストラの時、greaterで小さい順

void func3(){
  cout << "aa." << endl;
  cout << "..b" << endl;
  cout << "..b" << endl;
}
void func4(int t1){
  if(t1==0) cout << "zzyx";
  if(t1==1) cout << "wwyx";
  if(t1==2) cout << "uvss";
  if(t1==3) cout << "uvtt";
}
void func4_ume(int t1){
  if(t1==0)cout << "....";
  if(t1==1)cout << "....";
  if(t1==2)cout << "....";
  if(t1==3)cout << "....";
}
void func5(int t1){
  if(t1==0) cout << "aabbc";
  if(t1==1) cout << "hii.c";
  if(t1==2) cout << "h..jd";
  if(t1==3) cout << "g..jd";
  if(t1==4) cout << "gffee";
}
void func6(int t1){
  if(t1==0) cout << "aa.ccd";
  if(t1==1) cout << "..bf.d";
  if(t1==2) cout << "..bfee";
  if(t1==3) cout << "gghkk.";
  if(t1==4) cout << "j.h..l";
  if(t1==5) cout << "jii..l";
}
void func7(int t1){
  if(t1==0) cout << "aabbcc.";
  if(t1==1) cout << "...kklf";
  if(t1==2) cout << "...n.lf";
  if(t1==3) cout << "...nmme";
  if(t1==4) cout << "ggh...e";
  if(t1==5) cout << "j.h...d";
  if(t1==6) cout << "jii...d";
}


void func5_ume(){
  cout << ".....";
}
void func6_ume(){
  cout << "......";
}
void func7_ume(){
  cout << ".......";
}
signed main(){
  int n;
  cin >> n;
  if(n==2){
    cout << -1 << endl;
    return 0;
  }
  if(n==3){
    func3();
    return 0;
  }
  if(n%4==0){
    int n1 = n/4;
    REP(i,n1){
      REP(kk,4){
        REP(j,n1){
          if(i==j){
            func4(kk);
          }
          else{
            func4_ume(kk);
          }
        }
        cout << endl;
      }
    }
  }
  else if(n%4==1){
    int n1 = (n-5)/4;
    REP(i,n1){
      REP(kk,4){
        REP(j,n1){
          if(i==j){
            func4(kk);
          }
          else{
            func4_ume(kk);
          }
        }
        func5_ume();
        cout << endl;
      }
    }
    REP(i,5){
      REP(j,n-5){
        cout << ".";
      }
      func5(i);
      cout << endl;
    }

  }
  else if(n%4==2){
    int n1 = (n-6)/4;
    REP(i,n1){
      REP(kk,4){
        REP(j,n1){
          if(i==j){
            func4(kk);
          }
          else{
            func4_ume(kk);
          }
        }
        func6_ume();
        cout << endl;
      }
    }
    REP(i,6){
      REP(j,n-6){
        cout << ".";
      }
      func6(i);
      cout << endl;
    }

  }
  else if(n%4==3){
    int n1 = (n-7)/4;
    REP(i,n1){
      REP(kk,4){
        REP(j,n1){
          if(i==j){
            func4(kk);
          }
          else{
            func4_ume(kk);
          }
        }
        func7_ume();
        cout << endl;
      }
    }
    REP(i,7){
      REP(j,n-7){
        cout << ".";
      }
      func7(i);
      cout << endl;
    }
  }

  return 0;
}


Measured memory_bytes: 1280