#include <bits/stdc++.h>

using namespace std;

template<class T> void Gauss(vector<vector<T> > a, vector<T> &ans) {
	int n = a.size(), m = a[0].size() - 1;
	for (int i = 0; i < m; i++) {
		for (int j = i; j < n; j++) if (a[j][i + 1] != 0) {
			if (a[i][i + 1] == 0) {
				for (int k = 0; k <= m; k++) swap(a[i][k], a[j][k]);
			}
		}
		for (int j = i + 1; j < n; j++) if (a[j][i + 1] != 0) {
			T p = a[j][i + 1] / a[i][i + 1];
			for (int k = 0; k <= m; k++) {
				a[j][k] = a[j][k] - a[i][k] * p;
			}
		}
	}
	for (int i = n - 1; i >= 0; i--) if (a[i][i + 1] != 0) {
        ans[i] = a[i][0] / a[i][i + 1];
        for (int j = 0; j < i; j++) {
            a[j][0] = a[j][0] - a[j][i + 1] * ans[i];
        }
	}
}

const int dx4[4] = {0, 0, 1, -1};
const int dy4[4] = {1, -1, 0, 0};

int main() {
    int n, m, k;
    cin >> n >> m >> k;
    
    vector<string> a(n);
    for (int i = 0; i < n; i++) cin >> a[i];
    
    vector<vector<int> > b(n, vector<int>(m));
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            b[i][j] = i * m + j + 1;
    while (k --) {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        b[x1 - 1][y1 - 1] = (x2 - 1) * m + y2;
        b[x2 - 1][y2 - 1] = (x1 - 1) * m + y1;
    }
    // Write Your Code Here
    int init;
    vector<vector<double> > c(n * m, vector<double>(n * m + 1, 0));
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) {
            c[i * m + j][i * m + j + 1] = 1;
            if (a[i][j] == '%') c[i * m + j][0] = 1;
            if (a[i][j] == 'O' || a[i][j] == 'A') {
                if (a[i][j] == 'A') init = i * m + j;
                int cnt = 0;
                for (int k = 0; k < 4; k++) {
                    int x = i + dx4[k];
                    int y = j + dy4[k];
                    if (x < 0 || y < 0 || x == n || y == m || a[x][y] == '#') continue;
                    cnt ++;
                }
                for (int k = 0; k < 4; k++) {
                    int x = i + dx4[k];
                    int y = j + dy4[k];
                    if (x < 0 || y < 0 || x == n || y == m || a[x][y] == '#') continue;
                    c[i * m + j][b[x][y]] = -1.0 / cnt;
                }
            }
           // for (int t = 0; t <= n * m; t++) cout << c[i * m + j][t] << ' ';
           // cout << endl;
        }
    vector<double> ans(n * m);
    Gauss(c, ans);
    //for (int i = 0; i < n * m; i++) cout << ans[i] << endl;
    cout << ans[init] << endl;
    
    return 0;
}