def f(deep,map1,s1,x,y,h,w)
return 0 if map1[y][x]!=s1[deep]
if deep==7 then
return 1
else
res=0
[[1,0],[0,1],[-1,0],[0,-1]].each{|dx,dy|
x2=x+dx
y2=y+dy
next if x2<0 || w<=x2 || y2<0 || h<=y2
t=map1[y][x]
map1[y][x]="" if t!="A" && t!="O"
res+=f(deep+1,map1,s1,x2,y2,h,w)
map1[y][x]=t
}
return res
end
end
h,w=gets.split(" ").map{|e| e.to_i}
s1=["Y","O","K","O","H","A","M","A"]
map1=[]
h.times{
map1<<gets.chomp.split("")
}
ans=0
h.times{|y|
w.times{|x|
t=f(0,map1,s1,x,y,h,w)
ans+=t
}
}
puts ans
ZGVmIGYoZGVlcCxtYXAxLHMxLHgseSxoLHcpCglyZXR1cm4gMCBpZiBtYXAxW3ldW3hdIT1zMVtkZWVwXQoJaWYgZGVlcD09NyB0aGVuCgkJcmV0dXJuIDEKCWVsc2UKCQlyZXM9MAoJCQoJCVtbMSwwXSxbMCwxXSxbLTEsMF0sWzAsLTFdXS5lYWNoe3xkeCxkeXwKCQkJeDI9eCtkeAoJCQl5Mj15K2R5CgkJCW5leHQgaWYgeDI8MCB8fCB3PD14MiB8fCB5MjwwIHx8IGg8PXkyCgkJCXQ9bWFwMVt5XVt4XQoJCQltYXAxW3ldW3hdPSIiIGlmIHQhPSJBIiAmJiB0IT0iTyIKCQkJcmVzKz1mKGRlZXArMSxtYXAxLHMxLHgyLHkyLGgsdykKCQkJbWFwMVt5XVt4XT10CgkJfQoJCXJldHVybiByZXMKCWVuZAplbmQKaCx3PWdldHMuc3BsaXQoIiAiKS5tYXB7fGV8IGUudG9faX0KczE9WyJZIiwiTyIsIksiLCJPIiwiSCIsIkEiLCJNIiwiQSJdCm1hcDE9W10KaC50aW1lc3sKCW1hcDE8PGdldHMuY2hvbXAuc3BsaXQoIiIpCn0KYW5zPTAKaC50aW1lc3t8eXwKCXcudGltZXN7fHh8CgkJdD1mKDAsbWFwMSxzMSx4LHksaCx3KQoJCWFucys9dAoJfQp9CnB1dHMgYW5z