using namespace std;
const int N = 3e5 * 4 + 10;
struct cpx {
double x, y;
cpx(double a = 0, double b = 0) {
x = a, y = b;
}
cpx operator + (const cpx& t) const {
return cpx(x + t.x, y + t.y);
}
cpx operator - (const cpx& t) const {
return cpx(x - t.x, y - t.y);
}
cpx operator * (const cpx& t) const {
return cpx(x * t.x - y * t.y, x * t.y + y * t.x);
}
};
int n1, n2;
char a[N], b[N];
int sva[N], svb[N], limit = 1, L, R[N];
cpx A[N], B[N], P[N];
void FFT(cpx* A, int type) {
for (int i = 0; i < limit; i++) if (i < R[i]) swap(A[i], A[R[i]]);
for (int mid = 1; mid < limit; mid *= 2) {
cpx wn(cos(pi / mid), type * sin(pi / mid));
for (int len = mid * 2, pos = 0; pos < limit; pos += len) {
cpx w(1, 0);
for (int k = 0; k < mid; k++, w = w * wn) {
cpx x = A[pos + k];
cpx y = w * A[pos + mid + k];
A[pos + k] = x + y;
A[pos + mid + k] = x - y;
}
}
}
if (type == 1) return;
for (int i = 0; i <= limit; i++) A[i].x /= limit, A[i].y /= limit;
}
void oper() {
cin >> n1 >> n2 >> a >> b;
while (limit <= n1 + n2) limit *= 2, L++;
for (int i = 0; i <= limit; i++) R[i] = (R[i / 2] / 2) | ((i & 1) << (L - 1));
reverse(a, a + n1);
for (int i = 0; i < n1; i++) sva[i] = a[i] == '*' ? 0 : a[i] - 'a' + 1;
for (int i = 0; i < n2; i++) svb[i] = b[i] == '*' ? 0 : b[i] - 'a' + 1;
for (int i = 0; i <= limit; i++) A[i] = cpx(sva[i] * sva[i] * sva[i], 0);
for (int i = 0; i <= limit; i++) B[i] = cpx(svb[i], 0);
FFT(A, 1), FFT(B, 1);
for (int i = 0; i <= limit; i++) P[i] = P[i] + A[i] * B[i];
for (int i = 0; i <= limit; i++) A[i] = cpx(sva[i], 0);
for (int i = 0; i <= limit; i++) B[i] = cpx(svb[i] * svb[i] * svb[i], 0);
FFT(A, 1), FFT(B, 1);
for (int i = 0; i <= limit; i++) P[i] = P[i] + A[i] * B[i];
for (int i = 0; i <= limit; i++) A[i] = cpx(sva[i] * sva[i], 0);
for (int i = 0; i <= limit; i++) B[i] = cpx(svb[i] * svb[i], 0);
FFT(A, 1), FFT(B, 1);
for (int i = 0; i <= limit; i++) P[i] = P[i] - A[i] * B[i] * cpx(2, 0);
FFT(P, -1);
vector<int> ans;
for (int i = n1 - 1; i < max(n1, n2); i++) {
if (fabs(P[i].x) < 0.5) ans.push_back(i - n1 + 2);
}
cout << ans.size() << endl;
for (auto it : ans) cout << it << " ";
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t = 1; //cin >> t;
while (t--) oper();
return 0;
}