n, m = map(int, input().split())
s = input()
t = input()
k = -1
indices = []
for i in range(m-n+1):
diferente = 0
listaDifs = []
for j in range(n):
if t[i+j] != s[j]:
diferente += 1
listaDifs.append(j+1)
if k == -1 or diferente < k:
k = diferente
indices = listaDifs
print(k)
if k > 0:
print(*indices)
#include <bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
int n,m;
cin>>n>>m;
string str1,str2;
cin>>str1>>str2;
int mini=INT_MAX;
vector<int>v;
bool ans=false;
for(int i=0;i<=m-n;i++){
int ct=0;
vector<int>res;
for(int j=i;j<i+n;j++){
if(str2[j]!=str1[j-i]){
ct++;
res.push_back(j-i+1);
}
}
if(ct==0){
ans=true;
break;
}
if(ct<mini){
v.clear();
mini=ct;
for(auto ele:res){
v.push_back(ele);
}
}
}
if(ans){
cout<<0<<endl;
}
else{
cout<<mini<<endl;
for(auto ele:v){
cout<<ele<<" ";
}cout<<endl;
}
return 0;
}
1487A - Arena | 1520D - Same Differences |
376A - Lever | 1305A - Kuroni and the Gifts |
1609A - Divide and Multiply | 149B - Martian Clock |
205A - Little Elephant and Rozdil | 1609B - William the Vigilant |
978B - File Name | 1426B - Symmetric Matrix |
732B - Cormen --- The Best Friend Of a Man | 1369A - FashionabLee |
1474B - Different Divisors | 1632B - Roof Construction |
388A - Fox and Box Accumulation | 451A - Game With Sticks |
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |