#include<bits/stdc++.h>
const int mod = 1e9 + 7;
const int maxn = 1010;
typedef long long ll;
inline ll pow(ll a,ll b,ll ans = 1) {
	for(;b;b >>= 1,a = a * a % mod) if(b & 1)
		ans = ans * a % mod;
	return ans;
}
inline ll inverse(ll x){ return pow(x,mod - 2); }
int h, w; ll k;
char ch[maxn][maxn];
int main() {
	std::ios::sync_with_stdio(false), std::cin.tie(0);
	std::cin >> h >> w >> k;
	for(int i = 0;i < h;++i) std::cin >> ch[i];
	int c1 = 0,c2 = 0,c3 = 0;
	for(int i = 0;i < h;++i) for(int j = 0;j < w;++j)
		c3 += ch[i][j] = ch[i][j] == '#';
	for(int i = 0;i < h;++i) c1 += ch[i][0] && ch[i][w - 1];
	for(int i = 0;i < w;++i) c2 += ch[0][i] && ch[h - 1][i];
	if(c1 && c2 || k <= 1) return puts("1"), 0;
	if(!c1 && !c2) return std::cout << pow(c3, k - 1) << '\n', 0;
	int v = pow(c3, k - 1), c4 = 0;
	for(int i = 0;i < h;++i) for(int j = 0;j < w;++j)
		c4 += ch[i][j] && ch[i + !!c2][j + !!c1];
	ll s = 0, dt = (c1 + c2) * inverse(c3) % mod, val = pow(c3, k - 2);
	s = (dt == 1 ? k - 1 : (pow(dt, k - 1) - 1) * inverse(dt - 1)) % mod;
	std::cout << (v + (mod - s) * c4 % mod * val) % mod << '\n';
}
