#include<bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define pb push_back
#define ll long long
#define pii pair<int,int>
#define INF 1000000000
pii src, des;
int w, h;
string s[101];
bool valid(int i, int j)
{
return i >= 0 && j >= 0 && i < h && j < w && s[i][j] != '*';
}
int minturns(int i, int j, char dir)
{
if (!valid(i, j))
return INF;
if (des.first == i && des.second == j)
return 0;
// going in the same direction if possible
if (dir == 'n' && valid(i - 1, j))
return minturns(i - 1, j, dir);
if (dir == 'e' && valid(i, j + 1))
return minturns(i, j + 1, dir);
if (dir == 'w' && valid(i, j - 1))
return minturns(i, j - 1, dir);
if (dir == 's' && valid(i + 1, j))
return minturns(i + 1, j, dir);
// else change the direction
return 1 + min({
minturns(i - 1, j, 'n'),
minturns(i, j + 1, 'e'),
minturns(i, j - 1, 'w'),
minturns(i + 1, j, 's')
});;
}
void test_case()
{
cin >> w >> h;
for (int i = 0; i < h; i++)
cin >> s[i];
vector<pii> p;
for (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
if (s[i][j] == 'C')
p.pb({i, j});
src = p[0], des = p[1];
cout << min({
minturns(src.first, src.second, 'n'),
minturns(src.first, src.second, 'e'),
minturns(src.first, src.second, 'w'),
minturns(src.first, src.second, 's')
});
}
int main()
{
fastio
// int t;
// cin >> t;
// while (t--)
test_case();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmYXN0aW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7Y2luLnRpZShOVUxMKTtjb3V0LnRpZShOVUxMKTsKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIElORiAxMDAwMDAwMDAwCgpwaWkgc3JjLCBkZXM7CmludCB3LCBoOwpzdHJpbmcgc1sxMDFdOwoKCmJvb2wgdmFsaWQoaW50IGksIGludCBqKQp7CiAgICByZXR1cm4gaSA+PSAwICYmIGogPj0gMCAmJiBpIDwgaCAmJiBqIDwgdyAmJiBzW2ldW2pdICE9ICcqJzsKfQoKaW50IG1pbnR1cm5zKGludCBpLCBpbnQgaiwgY2hhciBkaXIpCnsKICAgIGlmICghdmFsaWQoaSwgaikpCiAgICAgICAgcmV0dXJuIElORjsKICAgIGlmIChkZXMuZmlyc3QgPT0gaSAmJiBkZXMuc2Vjb25kID09IGopCiAgICAgICAgcmV0dXJuIDA7CgogICAgLy8gZ29pbmcgaW4gdGhlIHNhbWUgZGlyZWN0aW9uIGlmIHBvc3NpYmxlCiAgICBpZiAoZGlyID09ICduJyAmJiB2YWxpZChpIC0gMSwgaikpCiAgICAgICAgcmV0dXJuIG1pbnR1cm5zKGkgLSAxLCBqLCBkaXIpOwogICAgaWYgKGRpciA9PSAnZScgJiYgdmFsaWQoaSwgaiArIDEpKQogICAgICAgIHJldHVybiBtaW50dXJucyhpLCBqICsgMSwgZGlyKTsKICAgIGlmIChkaXIgPT0gJ3cnICYmIHZhbGlkKGksIGogLSAxKSkKICAgICAgICByZXR1cm4gbWludHVybnMoaSwgaiAtIDEsIGRpcik7CiAgICBpZiAoZGlyID09ICdzJyAmJiB2YWxpZChpICsgMSwgaikpCiAgICAgICAgcmV0dXJuIG1pbnR1cm5zKGkgKyAxLCBqLCBkaXIpOwoKICAgIC8vIGVsc2UgY2hhbmdlIHRoZSBkaXJlY3Rpb24KICAgIHJldHVybiAxICsgbWluKHsKICAgICAgICBtaW50dXJucyhpIC0gMSwgaiwgJ24nKSwKICAgICAgICBtaW50dXJucyhpLCBqICsgMSwgJ2UnKSwKICAgICAgICBtaW50dXJucyhpLCBqIC0gMSwgJ3cnKSwKICAgICAgICBtaW50dXJucyhpICsgMSwgaiwgJ3MnKQogICAgfSk7Owp9Cgp2b2lkIHRlc3RfY2FzZSgpCnsKICAgIGNpbiA+PiB3ID4+IGg7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoOyBpKyspCiAgICAgICAgY2luID4+IHNbaV07CgogICAgdmVjdG9yPHBpaT4gcDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGg7IGkrKykKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHc7IGorKykKICAgICAgICAgICAgaWYgKHNbaV1bal0gPT0gJ0MnKQogICAgICAgICAgICAgICAgcC5wYih7aSwgan0pOwoKICAgIHNyYyA9IHBbMF0sIGRlcyA9IHBbMV07CgogICAgY291dCA8PCBtaW4oewogICAgICAgIG1pbnR1cm5zKHNyYy5maXJzdCwgc3JjLnNlY29uZCwgJ24nKSwKICAgICAgICBtaW50dXJucyhzcmMuZmlyc3QsIHNyYy5zZWNvbmQsICdlJyksCiAgICAgICAgbWludHVybnMoc3JjLmZpcnN0LCBzcmMuc2Vjb25kLCAndycpLAogICAgICAgIG1pbnR1cm5zKHNyYy5maXJzdCwgc3JjLnNlY29uZCwgJ3MnKQogICAgfSk7Cn0KCgppbnQgbWFpbigpCnsKICAgIGZhc3RpbwogICAgLy8gaW50IHQ7CiAgICAvLyBjaW4gPj4gdDsKICAgIC8vIHdoaWxlICh0LS0pCiAgICB0ZXN0X2Nhc2UoKTsKfQo=