#include <bits/stdc++.h>
using namespace std;
int m, n;
string s[55];
int a[55][55];
bool dd[55];
vector<int> d;
void input() {
  cin >> m >> n;
  for (int i = 0; i < m; i++) cin >> s[i];
  for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
      if (s[i][j] == '#')
        a[i][j] = 1;
      else
        a[i][j] = 0;
}
int findC() {
  int res = -1, cntres = 0;
  for (int i = 0; i < n; i++)
    if (!dd[i]) {
      int cnt = 0;
      for (int j = 0; j < m; j++) cnt += a[j][i];
      if (cnt > cntres) {
        cntres = cnt;
        res = i;
      }
    }
  return res;
}
void process() {
  memset(dd, false, sizeof(dd));
  while (1) {
    int c = findC();
    if (c == -1) {
      cout << "YES";
      return;
    }
    d.resize(0);
    for (int i = 0; i < m; i++)
      if (a[i][c] == 1) d.push_back(i);
    for (int i = 0; i < n; i++)
      if (!dd[i]) {
        int cnt = 0;
        for (int j = 0; j < d.size(); j++) cnt += a[d[j]][i];
        if (cnt == 0) continue;
        if (cnt < d.size()) {
          cout << "NO";
          return;
        }
        dd[i] = true;
      }
  }
}
int main() {
  cout << setprecision(10) << fixed;
  ios::sync_with_stdio(false), cin.tie(0);
  input();
  process();
  return 0;
}
