#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  string s;
  int n, m;
  cin >> s >> m;
  n = s.size();
  vector<string> a(m);
  for (int i = 0; i < m; ++i) cin >> a[i];
  vector<int> l, p;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      if (i + a[j].size() - 1 < n) {
        bool db = true;
        for (int k = 0; k < a[j].size(); ++k)
          if (s[i + k] != a[j][k]) db = false;
        if (db) {
          l.push_back(i);
          p.push_back(i + a[j].size() - 1);
        }
      }
    }
  }
  vector<int> min_pocz(n, -1);
  for (int i = 0; i < l.size(); ++i) min_pocz[l[i]] = l[i];
  for (int i = n - 2; i >= 0; --i)
    if (min_pocz[i] == -1) min_pocz[i] = min_pocz[i + 1];
  vector<int> max_pocz(n, -1);
  for (int i = 0; i < p.size(); ++i) max_pocz[p[i]] = max(max_pocz[p[i]], l[i]);
  int odp_dl = 0, odp_pocz = 0;
  for (int i = 0; i < n; ++i) {
    int nast_pocz = min_pocz[i];
    if (nast_pocz == -1) {
      if (n - i > odp_dl) {
        odp_dl = n - i;
        odp_pocz = i;
      }
      continue;
    }
    if (nast_pocz > i) {
      if (nast_pocz - i > odp_dl) {
        odp_dl = nast_pocz - i;
        odp_pocz = i;
      }
    }
    while (nast_pocz < n && max_pocz[nast_pocz] < i) {
      if (nast_pocz - i + 1 > odp_dl) {
        odp_dl = nast_pocz - i + 1;
        odp_pocz = i;
      }
      ++nast_pocz;
    }
  }
  cout << odp_dl << " " << odp_pocz;
  return 0;
}
