#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using ii = pair<int, int>;
using vii = vector<ii>;
using ll = long long;
using ull = unsigned long long;
using pll = pair<ll, ll>;
using vpll = vector<pll>;
using vll = vector<ll>;
using pdd = pair<double, double>;
using vpdd = vector<pdd>;
template <typename T>
using uset = unordered_set<T>;
template <typename T>
using umultiset = unordered_multiset<T>;
template <typename K, typename V>
using umap = unordered_map<K, V>;
template <typename K, typename V>
using umultimap = unordered_multimap<K, V>;
const int dr[] = {1, 0, -1, 0, 1, 1, -1, -1};
const int dc[] = {0, 1, 0, -1, 1, -1, -1, 1};
const double eps = 1e-9;
const int INF = 0x7FFFFFFF;
const ll INFLL = 0x7FFFFFFFFFFFFFFFLL;
const double pi = acos(-1);
template <typename T>
T take(queue<T>& O) {
  T tmp = O.front();
  O.pop();
  return tmp;
}
template <typename T>
T take(stack<T>& O) {
  T tmp = O.top();
  O.pop();
  return tmp;
}
template <typename T>
T take(priority_queue<T>& O) {
  T tmp = O.top();
  O.pop();
  return tmp;
}
template <typename T>
inline bool inRange(const T& z, const T& a, const T& b) {
  return a <= z && z <= b;
}
void OPEN(const string& in = "input.txt", const string& out = "output.txt") {
  freopen(in.c_str(), "r", stdin);
  freopen(out.c_str(), "w", stdout);
  return;
}
string s, t;
int lens, lent;
int ansk;
vi kpos;
int main(int argc, char** argv) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> lens >> lent >> s >> t;
  ansk = INF;
  for (int(i) = (0), _t = (lent - lens + 1); i < (_t); ++(i)) {
    int tmpans = 0;
    vi tmpvi;
    tmpvi.clear();
    for (int(j) = (0), _t = (lens); j < (_t); ++(j)) {
      if (s[j] != t[i + j]) {
        ++tmpans;
        tmpvi.push_back(j + 1);
      }
    }
    if (tmpans < ansk) {
      ansk = tmpans;
      kpos = tmpvi;
    }
  }
  cout << ansk << "\n";
  for (int(i) = (0), _t = ((int)kpos.size()); i < (_t); ++(i)) {
    if (i) cout << " ";
    cout << kpos[i];
  }
  cout << "\n";
}
