#include <bits/stdc++.h>
#pragma GCC target("avx")
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
using namespace std;
int n;
vector<string> s[11];
string ss;
int ch(char x) {
  if (x >= '0' && x <= '9') return x - '0';
  if (x >= 'a' && x <= 'z') return x - 'a' + 10;
  if (x >= 'A' && x <= 'Z') return x - 'A' + 36;
}
long long e[62][62], f[62][62][62];
long long times[62], ans = 0;
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> ss;
    s[ss.length()].push_back(ss);
    for (int i = 0; i < ss.length() / 2; i++)
      swap(ss[i], ss[ss.length() - i - 1]);
    s[ss.length()].push_back(ss);
  }
  for (int i = 3; i <= 10; i++)
    if (s[i].size() > 0) {
      memset(e, 0, sizeof(e));
      memset(f, 0, sizeof(f));
      sort(s[i].begin(), s[i].end());
      for (int j = 0; j < s[i].size(); j++)
        if (j == 0 || s[i][j] != s[i][j - 1])
          e[ch(s[i][j][0])][ch(s[i][j][i - 1])]++;
      for (int a = 0; a < 62; a++)
        for (int b = 0; b < 62; b++)
          if (e[a][b] > 0)
            for (int c = b; c < 62; c++)
              if (e[a][c] > 0)
                for (int d = c; d < 62; d++)
                  if (e[a][d] > 0)
                    f[b][c][d] = (f[b][c][d] + e[a][b] * e[a][c] % 998244353 *
                                                   e[a][d] % 998244353) %
                                 998244353;
      long long p = 24;
      for (int a = 0; a < 62; a++) {
        times[a]++;
        p /= times[a];
        for (int b = a; b < 62; b++) {
          times[b]++;
          p /= times[b];
          for (int c = b; c < 62; c++) {
            times[c]++;
            p /= times[c];
            for (int d = c; d < 62; d++) {
              times[d]++;
              p /= times[d];
              ans =
                  (ans + p * f[a][b][c] % 998244353 * f[a][b][d] % 998244353 *
                             f[a][c][d] % 998244353 * f[b][c][d] % 998244353) %
                  998244353;
              p *= times[d];
              times[d]--;
            }
            p *= times[c];
            times[c]--;
          }
          p *= times[b];
          times[b]--;
        }
        p *= times[a];
        times[a]--;
      }
    }
  cout << ans << endl;
  return 0;
}
