#ifdef DEBUG
#define _GLIBCXX_DEBUG
#endif
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
typedef long long ll;
const int maxN = 1005;
char a[maxN][maxN];
int cnt[maxN];
void make4(int i) {
    a[i][i] = 'a';
    a[i][i + 1] = 'a';
    a[i][i + 2] = 'b';
    a[i][i + 3] = 'c';
    a[i + 1][i] = 'z';
    a[i + 1][i + 1] = 'z';
    a[i + 1][i + 2] = 'b';
    a[i + 1][i + 3] = 'c';
    a[i + 2][i] = 'f';
    a[i + 2][i + 1] = 'u';
    a[i + 2][i + 2] = 'x';
    a[i + 2][i + 3] = 'x';
    a[i + 3][i] = 'f';
    a[i + 3][i + 1] = 'u';
    a[i + 3][i + 2] = 'y';
    a[i + 3][i + 3] = 'y';
}
void make5(int i) {
    a[i][i] = 'a';
    a[i + 1][i] = 'a';
    a[i + 2][i] = 'b';
    a[i + 3][i] = 'b';
    a[i + 4][i] = 'c';
    a[i + 4][i + 1] = 'c';
    a[i + 4][i + 2] = 'd';
    a[i + 4][i + 3] = 'd';
    a[i + 4][i + 4] = 'e';
    a[i + 3][i + 4] = 'e';
    a[i + 2][i + 4] = 'f';
    a[i + 1][i + 4] = 'f';
    a[i][i + 4] = 'g';
    a[i][i + 3] = 'g';
    a[i][i + 2] = 'h';
    a[i][i + 1] = 'h';
    a[i + 1][i + 1] = 'r';
    a[i + 1][i + 2] = 'r';
    a[i + 2][i + 3] = 'm';
    a[i + 3][i + 3] = 'm';
}
void make3(int i) {
    a[i][i] = 'a';
    a[i + 1][i] = 'a';
    a[i + 2][i] = 'b';
    a[i + 2][i + 1] = 'b';
    a[i + 2][i + 2] = 'c';
    a[i + 1][i + 2] = 'c';
    a[i][i + 1] = 'd';
    a[i][i + 2] = 'd';
}
void make7(int i) {
    make3(i);
    make3(i + 3);
    for (int j = 0; j < 6; j += 2) {
        a[i + 6][i + j] = 'h' + j;
        a[i + j][i + 6] = 'h' + j;
        a[i + 6][i + j + 1] = 'h' + j;
        a[i + j + 1][i + 6] = 'h' + j;
    }
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
//    freopen("input.txt", "r", stdin);
    int n;
    cin >> n;
    if (n == 2) {
        cout << -1;
        return 0;
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            a[i][j] = '.';
        }
    }
    if (n % 3 == 0) {
        for (int i = 0; i < n; i += 3) {
            make3(i);
        }
    }
    else {
        int aa = -1, bb = -1, cc = -1;
        for (int a = 0; 4 * a <= n; a++) {
            if (aa != -1) break;
            for (int b = 0; 5 * b + 4 * a <= n; b++) {
                if ((n - 5 * b - 4 * a) % 7 == 0) {
                    aa = a;
                    bb = b;
                    cc = (n - 5 * b - 4 * a) / 7;
                    break;
                }
            }
        }
        assert(aa != -1);
        for (int i = 0; i < aa; i++) {
            make4(4 * i);
        }
        for (int i = 0; i < bb; i++) {
            make5(4 * aa + 5 * i);
        }
        for (int i = 0; i < cc; i++) {
            make7(4 * aa + 5 * bb + 7 * i);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << a[i][j];
        }
        cout << '\n';
    }
    return 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (a[i][j] != '.') {
                if (j && a[i][j] == a[i][j - 1]) continue;
                cnt[i]++;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        assert(cnt[i] == cnt[0]);
    }
    return 0;
}

Measured memory_bytes: 2176