#include<bits/stdc++.h>

using namespace std;

#define IOS ios_base::sync_with_stdio(false); cin.tie(NULL)
#define ll long long
#define INF (ll)1e9 + 7
#define INF2 (ll)1e18 + 9
#define MOD (ll)998244353
#define ull unsigned long long
#define PI 3.141592653589793238
#define pb push_back
#define max3(x, y, z) max(x, max(y, z))
#define min3(x, y, z) min(x, min(y, z))
#define mp make_pair
#define mt make_tuple
#define pre(a,b) cout << fixed << setprecision(a) << b  //a for precision b for answer
#define all(x) (x).begin(), (x).end()
#define lb lower_bound //lower_bound(first_iterator, last_iterator, x) – returns an iterator pointing to the first element in the range [first,last) which has a value not less than ‘x’.
#define ub upper_bound //upper_bound(first_iterator, last_iterator, x) – returns an iterator pointing to the first element in the range [first,last) which has a value greater than ‘x’.
#define maxe *max_element
#define mine *min_element
#define acc(x) accumulate(x.begin(), x.end(), 0)
#define dst distance
#define sz(x) (int)x.size()
#define ff first
#define ss second

char grid[10][10];
int h, w;

int main()
{
    IOS;

    cin >> h >> w;
    for (int i = 1; i <= h; i++)
        for (int j = 1; j <= w; j++)
            cin >> grid[i][j];

    int curx = 1, cury = 1, step = 1, ans = 0;
    while (curx <= h and cury <= w and step <= h + w)
    {
        for (int i = 0; i <= step; i++)
        {
            if (grid[curx + i][cury + step - i] == '*' and curx + i <= h and cury + step - i <= w)
            {
                // cout << curx + i << " " << cury + step - i << '\n';
                curx += i, cury += step - i, step = 0, ans++;
                break;
            }
        }
        step++;
    }
    
    if (grid[1][1] == '*') ans++;

    cout << ans << '\n';

    return 0;
}
