Problem: A mouse encountered a nice big cake and decided to take a walk across it, eating the berries on top of the cake on its way. The cake is rectangular, neatly divided into squares; some of the squares have a berry in them, and some don't.

The mouse is in a bit of a hurry, though, so once she enters the cake from its northwest corner (the top left cell in the input data), she will only go east (right) or south (down), until she reaches the southeast corner (the bottom right cell). She will eat every berry in the squares she passes through, but not in the other squares.

The mouse tries to choose her path so as to maximize the number of berries consumed. However, her haste and hunger might be clouding her judgement, leading her to suboptimal decisions...

Input

The first line of input contains two integers H and W (1 ≤ H, W ≤ 5), separated by a space, — the height and the width of the cake.

The next H lines contain a string of W characters each, representing the squares of the cake in that row: '.' represents an empty square, and '*' represents a square with a berry.

Output

Output the number of berries the mouse will eat following her strategy.

Examples

Input


4 3
*..
.*.
..*
...


Output


3


Input


4 4
.*..
*...
...*
..*.


Output


2


Input


3 4
..**
*...
....


Output


1


Input


5 5
..*..
.....
**...
**...
**...


Output


1

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.StringTokenizer;

public class E {

    int [] findNearest(int x, int y, int [][]a) {
        int posI = a.length, posJ=a[0].length;
        int nearestPie = Integer.MAX_VALUE;

        for (int i=x; i<a.length; i++) {
            for (int j=y; j<a[0].length; j++) {
                if (a[i][j] > 0 && (i-x+j-y) < nearestPie) {
                    nearestPie = i-x+j-y;
                    posI = i; posJ = j;
                }
            }
        }

        return new int[] {posI, posJ};
    }

    public void solve() {

        int h = in.nextInt();
        int w = in.nextInt();
        int a[][] = new int[h][w];
        for (int i = 0; i < h; i++) {
            String line = in.next();
            for (int j = 0; j < w; j++) {
                a[i][j] = line.charAt(j) == '*' ? 1:0;
            }
        }

        int posI = 0, posJ = 0;
        int ans = 0;
        while (posI<h && posJ<w) {
            if (a[posI][posJ] == 1) {
                ans++;
                a[posI][posJ] = 0;
            }
            int [] t = findNearest(posI, posJ, a);
            posI = t[0];
            posJ = t[1];
        }

        out.println(ans);
    }

    class Pair implements Comparable<Pair> {
        int x;
        int y;

        public Pair(int x, int y) {
            this.x = x;
            this.y = y;
        }


        @Override
        public int compareTo(Pair o) {
            if (this.x == o.x)
                return this.y - o.y;
            return this.x - o.x;
        }

        @Override
        public String toString() {
            return "Pair{" +
                    "x=" + x +
                    ", y=" + y +
                    '}';
        }
    }

    public long binaryPower(long x, int exp, long mod) {
        if (exp == 0)
            return 1;

        long result = binaryPower(x, exp / 2, mod);

        if (exp % 2 == 0)
            return result * result % mod;

        return result * result % mod * x % mod;
    }

    String input = "";
    String output = "";
    FastScanner in;
    PrintWriter out;

    void run() throws Exception {
        if (input.length() == 0) {
            in = new FastScanner(System.in);
        } else {
            in = new FastScanner(new File(input));
        }
        if (output.length() == 0) {
            out = new PrintWriter(System.out);
        } else {
            out = new PrintWriter(new File(output));
        }

        solve();

        out.close();

    }

    public static void main(String[] args) throws Exception {
        new E().run();
    }

    class FastScanner {

        BufferedReader bf;
        StringTokenizer st;

        public FastScanner(InputStream is) {
            bf = new BufferedReader(new InputStreamReader(is));
        }

        public FastScanner(File fr) throws FileNotFoundException {
            bf = new BufferedReader(new FileReader(fr));
        }

        public String next() {
            try {
                while (st == null || !st.hasMoreTokens()) {
                    st = new StringTokenizer(bf.readLine());
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            return st.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public int[] readIntArray(int length) {
            int arr[] = new int[length];
            for (int i = 0; i < length; i++)
                arr[i] = nextInt();
            return arr;
        }
    }
}