# coding: utf-8
require 'minitest/autorun'
F=->s{l=s.split ?\n
b=[]
t={}
[*0...m=l.size].product([*0...n=l[0].size]).map{|y,x|c=l[y][x]
c!=' '&&c>?Z?b<<[c,y,x]:t[c.downcase]=[y,x]}
b.map{|q|c,y,x=q
u,i=t[c]
(m*n).times{|w|e=([u-(y+w)%m,i-(x+w)%n].map &:abs).max
e>c.ord-97||q<<w+e}
q[3]&&[q[3],q[0]]}.compact.sort.map{|a,b|b}}
describe '#F' do
def test_case_1
assert_equal %w[d a], F[%q{
D
d Aa
}]
end
def test_case_2
assert_equal %w[w b], F[%q{
W B
A
b
a
w
}]
end
def test_case_3
assert_equal %w[a], F[%q{
A
a
}]
end
def test_case_4
assert_equal %w[i d f], F[%q{
i
f d
DI F }]
end
def test_case_5
assert_equal %w[g w j], F[%q{
g a
G W
j
w
A J
}]
end
end
IyBjb2Rpbmc6IHV0Zi04CnJlcXVpcmUgJ21pbml0ZXN0L2F1dG9ydW4nCgpGPS0+c3tsPXMuc3BsaXQgP1xuCmI9W10KdD17fQpbKjAuLi5tPWwuc2l6ZV0ucHJvZHVjdChbKjAuLi5uPWxbMF0uc2l6ZV0pLm1hcHt8eSx4fGM9bFt5XVt4XQpjIT0nICcmJmM+P1o/Yjw8W2MseSx4XTp0W2MuZG93bmNhc2VdPVt5LHhdfQpiLm1hcHt8cXxjLHkseD1xCnUsaT10W2NdCihtKm4pLnRpbWVze3x3fGU9KFt1LSh5K3cpJW0saS0oeCt3KSVuXS5tYXAgJjphYnMpLm1heAplPmMub3JkLTk3fHxxPDx3K2V9CnFbM10mJltxWzNdLHFbMF1dfS5jb21wYWN0LnNvcnQubWFwe3xhLGJ8Yn19CgoKZGVzY3JpYmUgJyNGJyBkbwogIGRlZiB0ZXN0X2Nhc2VfMQogICAgYXNzZXJ0X2VxdWFsICV3W2QgYV0sIEZbJXF7ICAgICAgCkQgICAgIAogIGQgQWEKICAgICAgCiAgICAgIH1dCiAgZW5kCgogIGRlZiB0ZXN0X2Nhc2VfMgogICAgYXNzZXJ0X2VxdWFsICV3W3cgYl0sIEZbJXF7ICAgICAgICAKVyAgICAgIEIKICAgIEEgICAKICBiICAgICAKICAgICAgICAKICAgICAgYSAKICB3ICAgICAKICAgICAgICB9XQogIGVuZAoKICBkZWYgdGVzdF9jYXNlXzMKICAgIGFzc2VydF9lcXVhbCAld1thXSwgRlslcXsgICAgICAgIAogICAgICAgIAogICAgIEEgIAogICAgICAgIAogICAgICAgIAogICAgICBhIAogICAgICAgIH1dCiAgZW5kCgogIGRlZiB0ZXN0X2Nhc2VfNAogICAgYXNzZXJ0X2VxdWFsICV3W2kgZCBmXSwgRlslcXsgICAgICAgICAgCiAgICAgICAgICAKICAgaSAgICAgIAogIGYgICAgIGQgCiAgICAgICAgICAKICAgICAgICAgIAogICAgREkgIEYgfV0KICBlbmQKCiAgZGVmIHRlc3RfY2FzZV81CiAgICBhc3NlcnRfZXF1YWwgJXdbZyB3IGpdLCBGWyVxeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgZyAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgRyAgICAgICAgICAgICAgIFcgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICB3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSAgICAgIEogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0KICBlbmQKZW5kCgoK