#!/bin/python from __future__ import division import sys n, m, k = raw_input().strip().split(' ') n, m, k = [int(n), int(m), int(k)] M = [] T = {} row = [-1] * m P = [row] * n for a0 in xrange(n): row = [x for x in raw_input().strip()] for i, x in enumerate(row): if x=='A': start_row = a0 start_col = i M.append(row) M[start_row][start_col] = 'O' for a0 in xrange(k): i1, j1, i2, j2 = raw_input().strip().split(' ') i1, j1, i2, j2 = [int(i1), int(j1), int(i2), int(j2)] T[(i1, j1)] = (i2, j2) def escape_probability(i, j, M): if i<0 or j<0 or i>=n or j>=m: return 0 if M[i][j] == '#' or M[i][j] == '*': return 0 elif M[i][j] == '%': return 1 elif M[i][j] == 'O' and (i+1,j+1) in T: x, y = T[(i+1, j+1)] return escape_probability(x, y, M) elif i==0: M[i][j] = '#' if j==0: return (escape_probability(i, j+1, M) + escape_probability(i+1, j, M))/2 elif j==m-1: return (escape_probability(i, j-1, M) + escape_probability(i+1, j, M))/2 else: return (escape_probability(i, j-1, M) + escape_probability(i+1, j, M) + + escape_probability(i, j+1, M))/3 elif j==0: M[i][j] = '#' if i==n-1: return (escape_probability(i-1, j, M) + escape_probability(i, j+1, M))/2 else: return (escape_probability(i, j+1, M) + escape_probability(i+1, j, M) + escape_probability(i-1, j, M))/3 elif i==n-1: M[i][j] = '#' if j==m-1: return (escape_probability(i, j-1, M) + escape_probability(i-1, j, M))/2 else: return (escape_probability(i, j+1, M) + escape_probability(i-1, j, M) + escape_probability(i, j-1, M))/3 elif j==m-1: M[i][j] = '#' return (escape_probability(i, j-1, M) + escape_probability(i-1, j, M) + escape_probability(i+1, j, M))/3 else: M[i][j] = '#' return (escape_probability(i, j-1, M) + escape_probability(i, j+1, M) + escape_probability(i-1, j, M) + escape_probability(i+1, j, M))/4 print escape_probability(start_row, start_col, M)