/* -*- coding: utf-8 -*- * * 3558.cc: No.3558 Dominoes, Black and White - yukicoder */ #include #include #include #include using namespace std; /* constant */ const int MAX_N = 1000; const int MAX_N2 = MAX_N * 2; /* typedef */ using ll = long long; using pii = pair; using qpii = queue; /* global variables */ char s[MAX_N2 + 4]; /* subroutines */ int mdist(pii &a, pii &b) { return abs(b.first - a.first) + abs(b.second - a.second); } /* main */ int main() { int n; scanf("%d", &n); int n2 = n * 2; ll sum = 0; qpii lq, rq; for (int i = 0; i < n; i++) { scanf("%s", s); int k = 0; for (int j = 0; j < n2; j++) if (s[j] == '.') { if (k >= n) rq.push({i, k}); sum += j - k; k++; } while (k < n) lq.push({i, k++}); while (! lq.empty() && ! rq.empty()) { auto u = lq.front(); lq.pop(); auto v = rq.front(); rq.pop(); sum += mdist(u, v); } } printf("%lld\n", sum); return 0; }