#include <bits/stdc++.h>
using namespace std;
const long long p = 131;
const int N = 210000;
int n, m;
char sr1[N], sr2[N];
unsigned long long hash1[N][28], hash2[N][28], Q[N];
int Ans[N], ans;
int main() {
  int i, j, k, x, y;
  cin >> n >> m;
  scanf("%s%s", sr1 + 1, sr2 + 1);
  Q[0] = 1;
  for (i = 1; i <= n; ++i) Q[i] = Q[i - 1] * p;
  for (j = 0; j <= 25; ++j)
    for (i = 1; i <= n; ++i) {
      hash1[i][j] = hash1[i - 1][j] * p;
      if (sr1[i] - 'a' == j) hash1[i][j] += 1;
    }
  for (j = 0; j <= 25; ++j)
    for (i = 1; i <= m; ++i) {
      hash2[i][j] = hash2[i - 1][j] * p;
      if (sr2[i] - 'a' == j) hash2[i][j] += 1;
    }
  int cnt;
  for (i = 1; i <= n - m + 1; ++i) {
    cnt = 0;
    for (x = 0; x < 26; ++x) {
      if (cnt != x) break;
      for (y = 0; y < 26; ++y)
        if (hash2[m][x] == hash1[i + m - 1][y] - hash1[i - 1][y] * Q[m])
          if (hash2[m][y] == hash1[i + m - 1][x] - hash1[i - 1][x] * Q[m]) {
            cnt++;
            break;
          }
    }
    if (cnt == 26) Ans[++ans] = i;
  }
  cout << ans << endl;
  for (i = 1; i < ans; ++i) printf("%d ", Ans[i]);
  if (ans != 0) printf("%d", Ans[ans]);
}
