#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimization("unroll-loops")
using namespace std;
unsigned long long G1[62][62][62];
unsigned long long G3[62][62][62];
unsigned long long G4[62][62][62];
unsigned long long G6[62][62][62];
int code(char c) {
  if ('a' <= c && c <= 'z') return c - 'a';
  if ('A' <= c && c <= 'Z') return 26 + c - 'A';
  return 52 + c - '0';
}
int main() {
  clock_t pradzia = clock();
  ios_base::sync_with_stdio(false);
  set<string> A[11];
  int n;
  cin >> n;
  while (n--) {
    string s;
    cin >> s;
    A[s.size()].insert(s);
    reverse(s.begin(), s.end());
    A[s.size()].insert(s);
  }
  unsigned long long ans = 0;
  for (int t = 3; t <= 10; t++) {
    unsigned long long K[62][62];
    for (int i = 0; i < 62; i++)
      for (int j = 0; j < 62; j++) K[i][j] = 0;
    for (string a : A[t]) {
      K[code(a[0])][code(a.back())]++;
    }
    for (int a0 = 0; a0 < 62; a0++) {
      for (int a2 = 0; a2 < 62; a2++) {
        for (int a5 = 0; a5 < 62; a5++) {
          G1[a0][a2][a5] = 0;
          for (int a1 = 0; a1 < 62; a1++) {
            G1[a0][a2][a5] += K[a0][a1] * K[a1][a2] * K[a1][a5];
          }
          G1[a0][a2][a5] %= 998244353;
        }
      }
    }
    for (int a0 = 0; a0 < 62; a0++) {
      for (int a2 = 0; a2 < 62; a2++) {
        for (int a7 = 0; a7 < 62; a7++) {
          G3[a0][a2][a7] = 0;
          for (int a3 = 0; a3 < 62; a3++) {
            G3[a0][a2][a7] += K[a2][a3] * K[a3][a0] * K[a3][a7];
          }
          G3[a0][a2][a7] %= 998244353;
        }
      }
    }
    for (int a0 = 0; a0 < 62; a0++) {
      for (int a5 = 0; a5 < 62; a5++) {
        for (int a7 = 0; a7 < 62; a7++) {
          G4[a0][a5][a7] = 0;
          for (int a4 = 0; a4 < 62; a4++) {
            G4[a0][a5][a7] += K[a4][a5] * K[a7][a4] * K[a0][a4];
          }
          G4[a0][a5][a7] %= 998244353;
        }
      }
    }
    for (int a2 = 0; a2 < 62; a2++) {
      for (int a5 = 0; a5 < 62; a5++) {
        for (int a7 = 0; a7 < 62; a7++) {
          G6[a2][a5][a7] = 0;
          for (int a6 = 0; a6 < 62; a6++) {
            G6[a2][a5][a7] += K[a5][a6] * K[a6][a7] * K[a2][a6];
          }
          G6[a2][a5][a7] %= 998244353;
        }
      }
    }
    for (int a0 = 0; a0 < 62; a0++) {
      for (int a2 = 0; a2 < 62; a2++) {
        for (int a5 = 0; a5 < 62; a5++) {
          unsigned long long s = 0;
          for (int a7 = 0; a7 < 62; a7++) {
            s = s + ((G3[a0][a2][a7] * G6[a2][a5][a7]) % 998244353) *
                        G4[a0][a5][a7];
          }
          s %= 998244353;
          ans = ans + G1[a0][a2][a5] * s;
          ans %= 998244353;
        }
      }
    }
  }
  cout << ans << "\n";
  cerr << double(clock() - pradzia) / CLOCKS_PER_SEC << "\n";
}
