2 1
1 1
 4 1
2 2 1 1
 10 1
2 6 3 4 2 4 4 3 2 1
 2 1
999152 999153
 8 1000000
1 1 5 1000000 1000000 2 2 2
 9 2
1 6 1 5 5 8 6 8 7
 15 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 4
8
 10 1
6 3 1 3 6 4 1 3 6 4
 10 1
1 2 3 5 6 8 10 11 9 4
 7 2
1 5 5 8 9 8 8
 2 1000000
1 1000000
 8 2
3 13 9 8 3 13 9 14
 1 1
1
 2 1
1 2

2
 2
 4
 1
 2
 4
 15
 1
 7
 2
 4
 1
 5
 1
 1

#include <bits/stdc++.h>
using namespace std;
const int oo = 0x3f3f3f3f;
const long long ooo = 9223372036854775807ll;
const int _cnt = 1000 * 1000 + 7;
const int _p = 1000 * 1000 * 1000 + 7;
const int N = 300005;
const double PI = acos(-1.0);
const double eps = 1e-9;
int o(int x) { return x % _p; }
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a / gcd(a, b) * b; }
void file_put() {
  string s = "/home/jslijin/jslijin/code/";
  freopen((s + "code.in").c_str(), "r", stdin);
  freopen((s + "code.out").c_str(), "w", stdout);
}
int n, a[N], b[N], p[N];
vector<int> S[N];
char st[N];
long long ans = 0;
void bat(int k) {
  p[0] = 0;
  int l = strlen(st + 1), ss = oo;
  for (int i = (1); i <= (l); ++i)
    p[i] = p[i - 1] + (st[i] == '(') - (st[i] == ')');
  for (int i = (1); i <= (l); ++i) ss = ((ss) < (p[i]) ? (ss) : (p[i]));
  a[k] = ss, b[k] = p[l];
}
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= (n); ++i) scanf("%s", st + 1), bat(i);
  for (int i = (1); i <= (n); ++i)
    if (b[i] <= 0) S[-b[i]].push_back(-a[i]);
  for (int i = (0); i <= (300000); ++i) sort((S[i]).begin(), (S[i]).end());
  for (int i = (1); i <= (n); ++i)
    if (a[i] >= 0)
      ans += upper_bound((S[b[i]]).begin(), (S[b[i]]).end(), b[i]) -
             S[b[i]].begin();
  printf("%lld\n", ans);
  return 0;
}
