#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <functional>
#include <list>
#include <cstdio>
#include <cmath>
#include <cstdlib>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int,int> pii;
#define bpc __builtin_popcount
#define For(i,a,b) for (int i = a; i < b; i++)

string trim(string s)
{
	while (s.size() && isspace(s[0])) s.erase(0,1);
	while (s.size() && isspace(s[s.size()-1])) s.erase(s.size()-1, 1);
	return s;
}

int main()
{
	freopen("DATA5.txt", "r", stdin);
	freopen("OUT5.txt", "w", stdout);
	
	char temp[20][20];
	char grid[20][20];
	
	For (T, 0, 5)
	{
		int W,C,R;
		cin >> W >> C >> R;
		For (i, 0, R)
			For (j, 0, C) {
				cin >> grid[i][j];
				temp[i][j] = grid[i][j];
				if (grid[i][j] == 'A') grid[i][j] = '.';
			}
		
		For (i, 0, W) {
			int ci = 0, cj = 0;
			while (grid[ci][cj] != '*')
			{
				//move down?
				if (ci+1 < R && grid[ci+1][cj] == '.') { ci++; continue; }
				//move right?
				if (cj+1 < C && grid[ci][cj+1] == '.') { cj++; continue; }
				
				break;
			}
			if (grid[ci][cj] != '#')
				grid[ci][cj] = '*';
			//cerr << ci << " " << cj << endl;
		}
			
		int ans = 0;
		For (i, 0, R)
			For (j, 0, C)
				if (temp[i][j] == 'A' && grid[i][j] == '*')
					ans++;
		cout << ans << endl;
	}
	
	return 0;
}
