#include <bits/stdc++.h>
bool f[1001][1001];
int n, k, i, j, l, m;
int a[1000000], b[1000000];
int main() {
  while (~scanf("%d %d", &n, &k)) {
    if (n <= k) {
      puts("-1");
      continue;
    }
    memset(f, 0, sizeof(f));
    bool flag = 1;
    m = 0;
    for (i = 1; i <= n; i++) {
      for (j = 1; j <= k; j++) {
        l = i + j;
        if (l > n) l -= n;
        if (f[i][l]) {
          flag = 0;
          break;
        }
        f[i][l] = f[l][i] = 1;
        a[m] = i;
        b[m] = l;
        m++;
      }
      if (!flag) break;
    }
    if (flag) {
      printf("%d\n", m);
      for (i = 0; i < m; i++) printf("%d %d\n", a[i], b[i]);
    } else {
      puts("-1");
    }
  }
  return 0;
}
