#include #include #include static int count; static std::string tiles; int subsequence(int sequenceSize, int inner, int outer) { int result = 0; int color1 = 0; int color2 = 0; for(int i = 0; i < sequenceSize; i++) { if(tiles[i] == 'X') color1++; else color2++; } if((color1 == inner && color2 == outer) || (color1 == outer && color2 == inner)) result++; for(int i = 0; i < count - sequenceSize; i++) { if(tiles[i] == 'X') color1--; else color2--; if(tiles[i + sequenceSize] == 'X') color1++; else color2++; if((color1 == inner && color2 == outer) || (color1 == outer && color2 == inner)) result++; } return result; }; int main() { int result = 0; std::cin >> count; std::cin >> tiles; if(count < 9) { std::cout << 0 << std::endl; return 0; } int size = sqrt(count); for(int i = 0; i <= size - 3; i++) { int inner = pow(size - i - 2, 2); int outer = 4 * (size - i - 2) + 4; int sequenceSize = pow(size - i, 2); result += subsequence(sequenceSize, inner, outer); } std::cout << result << std::endl; return 0; }