func_code_string: #include <bits/stdc++.h>   using namespace std;   char v[2100][2100];   int n, m;   int sumx[2100][2100];   int sumy[2100][2100];   long long ans1, ans2, ans3, cima, baixo;   int main() {     bool ok;     scanf( %d %d , &n, &m);     for (int i = 0; i < n; ++i) scanf( %s , v[i]);     for (int i = 0; i < n; ++i) {       for (int j = 0; j < m; ++j) {         if (j > 0) sumx[i][j] = sumx[i][j - 1];         sumx[i][j] += (v[i][j] ==  . );       }     }     for (int j = 0; j < m; ++j) {       for (int i = 0; i < n; ++i) {         if (i > 0) sumy[i][j] = sumy[i - 1][j];         sumy[i][j] += (v[i][j] ==  . );       }     }     for (int i = 1; i < m - 1; ++i)       if (sumy[n - 1][i] == n) ans1++;     for (int i = 1; i < n - 1; ++i)       if (sumx[i][m - 1] == m) ans1++;     for (int i = 1; i < n - 1; ++i) {       ok = true;       if (v[i][0] ==  # ) ok = false;       if (ok)         for (int j = 1; j < m - 1; ++j) {           if (v[i][j] !=  . ) {             ok = false;             break;           }           if (sumy[i - 1][j] == i) ans2++;           if (sumy[n - 1][j] - sumy[i][j] == n - i - 1) ans2++;         }       if (v[i][m - 1] ==  # ) continue;       for (int j = m - 2; j >= 1 && v[i][j] ==  . ; --j) {         if (sumy[i - 1][j] == i) ans2++;         if (sumy[n - 1][j] - sumy[i][j] == n - i - 1) ans2++;       }     }     for (int i = 1; i < n - 1; ++i) {       cima = baixo = 0;       for (int j = 1; j < m - 1; ++j) {         if (v[i][j] ==  # ) {           cima = baixo = 0;           continue;         }         if (sumy[i][j] == i + 1) {           ans3 += baixo + cima;           if (j > 1 && v[i][j - 1] ==  .  && sumy[i][j - 1] == i + 1) ans3--;         }         if (sumy[n - 1][j] - sumy[i][j] == n - i - 1) {           ans3 += baixo + cima;           if (j > 1 && v[i][j - 1] ==  .  &&               sumy[n - 1][j - 1] - sumy[i][j - 1] == n - i - 1)             ans3--;         }         if (sumy[i][j] == i + 1) cima++;         if (sumy[n - 1][j] - sumy[i][j] == n - i - 1) baixo++;       }     }     for (int j = 1; j < m - 1; ++j) {       cima = baixo = 0;       for (int i = 1; i < n - 1; ++i) {         if (v[i][j] ==  # ) {           cima = baixo = 0;           continue;         }         if (sumx[i][j] == j + 1) {           ans3 += baixo + cima;           if (i > 1 && v[i - 1][j] ==  .  && sumx[i - 1][j] == j + 1) ans3--;         }         if (sumx[i][m - 1] - sumx[i][j] == m - j - 1) {           ans3 += baixo + cima;           if (i > 1 && v[i - 1][j] ==  .  &&               sumx[i - 1][m - 1] - sumx[i - 1][j] == m - j - 1)             ans3--;         }         if (sumx[i][j] == j + 1) cima++;         if (sumx[i][m - 1] - sumx[i][j] == m - j - 1) baixo++;       }     }     printf( %lld n , ans1 + ans2 + ans3);     return 0;   }   