#include <bits/stdc++.h>
using namespace std;
int dx[] = {0, 0, +1, -1};
int dy[] = {+1, -1, 0, 0};
inline bool EQ(double a, double b) { return fabs(a - b) < 1e-9; }
template <typename T>
std::string NumberToString(T Number) {
  std::ostringstream ss;
  ss << Number;
  return ss.str();
}
int biton(int N, int pos) { return N = N | (1 << pos); }
int bitoff(int N, int pos) { return N = N & ~(1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
string ship[1199];
int n, k;
int fil[299][299];
bool searchL(int x, int y) {
  if (y + k > n) return false;
  for (int i = y; i < y + k; i++)
    if (ship[x][i] == '#') return false;
  return true;
}
bool searchD(int x, int y) {
  ;
  if (x + k > n) return false;
  for (int i = x; i < x + k; i++)
    if (ship[i][y] == '#') return false;
  return true;
}
void fillL(int x, int y) {
  for (int i = y; i < y + k; i++) fil[x][i]++;
}
void fillD(int x, int y) {
  for (int i = x; i < x + k; i++) fil[i][y]++;
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> ship[i];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (ship[i][j] == '.') {
        if (searchL(i, j)) {
          fillL(i, j);
        }
        if (searchD(i, j)) {
          fillD(i, j);
          ;
        }
      }
    }
  }
  int nx = -1, ny = -1, val = -1;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (fil[i][j] > val) {
        val = fil[i][j];
        nx = i, ny = j;
      }
    }
  }
  cout << nx + 1 << ' ' << ny + 1 << endl;
  return 0;
}
