#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std; // 575;

int n;
string str[10005];
vector<int> pre_list[32];
vector<int> suf_list[32];

vector<int> vs;
bool used[100005];

void dfs(int v);
void rdfs(int v, int k);
int scc(void);

bool is_ok(void);

int main()
{
    while (scanf("%d", &n), n != 0) {

        // init
        for (int i = 0; i < 32; i++) {
            pre_list[i].clear();
            suf_list[i].clear();
        }
        for (int i = 0; i < 10005; i++) {
            str[i].clear();
        }

        for (int i = 0; i < n; i++) {
            cin >> str[i];
        }

        sort(str, str + n);
                
        for (int i = 0; i < n; i++) {
            char s = str[i][0];
            char t = str[i][str[i].size() - 1];

            pre_list[s - 'a'].push_back(i);
            suf_list[t - 'a'].push_back(i);
        }

        if (scc() == 1) {
            /*
            memset(used, 0, sizeof(used));
            vs.clear();
            dfs(0);
            */

            if (is_ok()) {
                puts("OK");
            }
            else {
                puts("NG");
            }
        }
        else {
            puts("NG");
        }
    }
}

void dfs(int v)
{
    used[v] = true;
    char ch = str[v][str[v].size() - 1] - 'a';

    for (int i = 0; i < pre_list[ch].size(); i++) {
        if (!used[pre_list[ch][i]]) {
            dfs(pre_list[ch][i]);
        }
    }

    vs.push_back(v);
}

void rdfs(int v, int k)
{
    used[v] = true;

    char ch = str[v][0] - 'a';

    for (int i = 0; i < suf_list[ch].size(); i++) {
        if (!used[suf_list[ch][i]]) {
            rdfs(suf_list[ch][i], k);
        }
    }
}

int scc(void)
{
    memset(used, 0, sizeof(used));

    vs.clear();

    for (int v = 0; v < n; v++) {
        if (!used[v]) {
            dfs(v);
        }
    }

    memset(used, 0, sizeof(used));
    int k = 0;
    for (int i = vs.size() - 1; i >= 0; i--) {
        if (!used[vs[i]]) {
            rdfs(vs[i], k);
            k++;
        }
    }

    return k;
}

bool is_ok(void)
{
    int suf_cnt[32] = {};
    int pre_cnt[32] = {};

    for (int i = 0; i < n; i++) {
        pre_cnt[str[i][0] - 'a']++;
        suf_cnt[str[i][str[i].size() - 1] - 'a']++;
    }

    for (int i = 0; i < 32; i++) {
        if (pre_cnt[i] != suf_cnt[i]) {
            return false;
        }
    }

    return true;
}

