#include <bits/stdc++.h>
using namespace std;

int main() {
  int H;
  int W;
  cin >> H >> W;
  vector<vector<char>> data(H, vector<char>(W));
  
  for (int i = 0; i < H; i++) {
  for (int j = 0; j < W; j++) {
    cin >> data.at(i).at(j);
    }
  }
  int a = 0;
  int b = 0;
  for (int i = 0; i < H-1; i++) {
  for (int j = 0; j < W; j++) {
    if (data.at(i).at(j) == '.' && data.at(i+1).at(j) == '.'){
      a++;
    }
  }
  }
  for (int i = 0; i < H; i++) {
  for (int j = 0; j < W-1; j++) {
    if (data.at(i).at(j) == '.' && data.at(i).at(j+1) == '.'){
      b++;
    }
  }
  }
  cout << a+b << endl;
}
#include<bits/stdc++.h>
using namespace std;
long long int n,k,cnt=0;

struct name
{
    long long int bianhao;
    long long int x;
}num[200005];
bool cmp(name a,name b)
{
    return a.bianhao<b.bianhao;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>num[i].bianhao>>num[i].x;
    }
    sort(num,num+n,cmp);
    long long int index=0;
    long long int res=0;
    for(long long int i=0;i<n;i++)
    {
        if(index!=num[i].bianhao)
        {
            index=num[i].bianhao;
            res=i;
        }else{
                num[res].x+=num[i].x;
                num[i].x=0;
        }
    }
    // for(int i=0;i<n;i++)
    // {
    //     cout<<num[i].bianhao<<" "<<num[i].x<<endl;
    // }
    long long int l=0;
    while(1)
    {
        if(k-(num[cnt].bianhao-l)>=0&&cnt<n)
        {
            k=k-(num[cnt].bianhao-l);
            l=num[cnt].bianhao;
            k+=num[cnt].x;
            cnt++;
        }else{
            l+=k;
            k=0;
        }
        if(k<=0)
        {
            cout<<l;
            break;
        }
    }
    return 0;
}