#include <cstdlib>
#include <cstdio>
#include <memory.h>

const int MaxN = 1000100;
const int MaxD = 1000100;

int n, d, sol, pos;
char s[MaxN], p[MaxN];
int count[10];
int a[MaxD][10], ind[MaxN], num[MaxN];

int main() {

	FILE* inFile = fopen("sorti.in", "r");
	FILE* outFile = fopen("sorti.out", "w");
	
	fscanf(inFile, "%d%d", &n, &d);
	fscanf(inFile, "%s", s);

	memset(count, 0, sizeof(count));
	for (int i = 0; i < n; i++)
		count[s[i] - 48]++;
	pos = 0;
	for (int i = 0; i < 10; i++)
		for (int j = 0; j < count[i]; j++) 
			p[pos++] = (char)(i + 48);

	for (int i = 0; i < n; i++) {
		a[i % d][s[i] - 48]++;
		a[i % d][p[i] - 48]--;
	}

	sol = 0;
	for (int i = 0; i < d; i++)
		for (int j = 0; j < 10; j++)
			if (a[i][j] > 0) sol += a[i][j];
	fprintf(outFile, "%d\n", sol);

	int number = 0;
	for (int i = 0; i < d; i++) {
		pos = i;
		for (int j = 0; j < 10; j++) 
			while (a[i][j] < 0) {
				if (a[i][ s[pos] - 48 ] > 0) {
					ind[number] = pos + 1;
					num[number] = j;
					number++;
					a[i][j]++;
					a[i][ s[pos] - 48 ]--;
				}
				pos += d;
			}
	}

	for (int i = 0; i < sol; i++)
		fprintf(outFile, "%d %d\n", ind[i], num[i]);

	fclose(inFile);
	fclose(outFile);
	return 0;
}
