#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
using namespace std;
typedef long long ll;
#define For(i, a, b) for (int i = a; i < b; ++i)
#define Forr(i, a, b) for (int i = b - 1; i >= a; --i)
#define Min(a, b) (a < b ? a : b)
#define Max(a, b) (a > b ? a : b)
#define vi vector<int>
#define vl vector<ll>
#define pb push_back
#define Sort(x) sort(x.begin(), x.end())
#define Sortr(x) sort(x.rbegin(), x.rend())
#define vpi vector<pair<int, int>>
#define vpl vector<pair<ll, ll>>
#define mp make_pair

// Conditions for a valid cell
bool IsValid(vector<vector<bool>> &visited, int row, int col)
{
    // Check if cell is out of bounds
    if (row < 0 || col < 0 || row >= visited.size() || col >= visited[0].size())
    {
        return false;
    }

    // Check if cell is already visited
    if (visited[row][col])
    {
        return false;
    }

    return true;
}

pair<int, int> BreadthFirstSearch(vector<string> &grid, vector<vector<bool>> &visited, int irow, int icol)
{
    // Enqueue the initial cell
    queue<pair<int, int>> open;
    open.push(make_pair(irow, icol));
    visited[irow][icol] = true;

    while (!open.empty())
    {
        // Dequeue the cell at the front of the queue
        pair<int, int> cell = open.front();
        int row = cell.first;
        int col = cell.second;
        open.pop();

        // Exit Conditions
        if(grid[row][col] == '*')
        {
            grid[row][col] = '.';
            return cell;
        }

        // Coordinates for adjacent cells
        int drow[2] = {0, 1};
        int dcol[2] = {1, 0};

        // Add adjacent valid cells to queue
        for (int i = 0; i < 2; ++i)
        {
            int arow = row + drow[i];
            int acol = col + dcol[i];

            if (IsValid(visited, arow, acol))
            {
                open.push(make_pair(arow, acol));
                visited[arow][acol] = true;
            }
        }
    }
    return make_pair(-1, -1);
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int h, w, x=0, y=0, c=-1;
    cin >> h >> w;
    vector<string> grid(h);
    for(string &i: grid)
    {
        cin >> i;
    }
    vector< vector<bool> > visited;
    vector<bool> temp(w);
    For(i, 0, h)
    {
        visited.pb(temp);
    }
    auto temp2 = make_pair(0, 0);
    while(temp2 != make_pair(-1, -1))
    {
        temp2 = BreadthFirstSearch(grid, visited, x, y);
        ++c;
        x = temp2.first;
        y = temp2.second;
    }
    cout << c;
}