import java.io.BufferedInputStream;
import java.io.IOException;
public class Main {
static class FastScanner {
int c;
do {
c = in.read();
} while (c <= ' ' && c != -1);
int num = 0;
while (c > ' ') {
num = num * 10 + c - '0';
c = in.read();
}
return num;
}
}
FastScanner fs = new FastScanner();
int n = fs.nextInt();
int m = fs.nextInt();
int[] head = new int[n + 1];
int[] to = new int[2 * m];
int[] next = new int[2 * m];
int[] degree = new int[n + 1];
java.
util.
Arrays.
fill(head,
-1);
int edgeIndex = 0;
for (int i = 0; i < m; i++) {
int u = fs.nextInt();
int v = fs.nextInt();
to[edgeIndex] = v;
next[edgeIndex] = head[u];
head[u] = edgeIndex++;
to[edgeIndex] = u;
next[edgeIndex] = head[v];
head[v] = edgeIndex++;
degree[u]++;
degree[v]++;
}
boolean[] visited = new boolean[n + 1];
int[] stack = new int[n];
int answer = 0;
for (int i = 1; i <= n; i++) {
if (visited[i]) {
continue;
}
int top = 0;
stack[top++] = i;
visited[i] = true;
boolean isCycle = true;
while (top > 0) {
int u = stack[--top];
if (degree[u] != 2) {
isCycle = false;
}
for (int e = head[u]; e != -1; e = next[e]) {
int v = to[e];
if (!visited[v]) {
visited[v] = true;
stack[top++] = v;
}
}
}
if (isCycle) {
answer++;
}
}
}
}
CmltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkSW5wdXRTdHJlYW07CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgc3RhdGljIGNsYXNzIEZhc3RTY2FubmVyIHsKICAgICAgICBwcml2YXRlIGZpbmFsIEJ1ZmZlcmVkSW5wdXRTdHJlYW0gaW4gPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbShTeXN0ZW0uaW4pOwoKICAgICAgICBpbnQgbmV4dEludCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgICAgIGludCBjOwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBjID0gaW4ucmVhZCgpOwogICAgICAgICAgICB9IHdoaWxlIChjIDw9ICcgJyAmJiBjICE9IC0xKTsKCiAgICAgICAgICAgIGludCBudW0gPSAwOwogICAgICAgICAgICB3aGlsZSAoYyA+ICcgJykgewogICAgICAgICAgICAgICAgbnVtID0gbnVtICogMTAgKyBjIC0gJzAnOwogICAgICAgICAgICAgICAgYyA9IGluLnJlYWQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbnVtOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIEZhc3RTY2FubmVyIGZzID0gbmV3IEZhc3RTY2FubmVyKCk7CgogICAgICAgIGludCBuID0gZnMubmV4dEludCgpOwogICAgICAgIGludCBtID0gZnMubmV4dEludCgpOwoKICAgICAgICBpbnRbXSBoZWFkID0gbmV3IGludFtuICsgMV07CiAgICAgICAgaW50W10gdG8gPSBuZXcgaW50WzIgKiBtXTsKICAgICAgICBpbnRbXSBuZXh0ID0gbmV3IGludFsyICogbV07CiAgICAgICAgaW50W10gZGVncmVlID0gbmV3IGludFtuICsgMV07CgogICAgICAgIGphdmEudXRpbC5BcnJheXMuZmlsbChoZWFkLCAtMSk7CgogICAgICAgIGludCBlZGdlSW5kZXggPSAwOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgICAgICBpbnQgdSA9IGZzLm5leHRJbnQoKTsKICAgICAgICAgICAgaW50IHYgPSBmcy5uZXh0SW50KCk7CgogICAgICAgICAgICB0b1tlZGdlSW5kZXhdID0gdjsKICAgICAgICAgICAgbmV4dFtlZGdlSW5kZXhdID0gaGVhZFt1XTsKICAgICAgICAgICAgaGVhZFt1XSA9IGVkZ2VJbmRleCsrOwoKICAgICAgICAgICAgdG9bZWRnZUluZGV4XSA9IHU7CiAgICAgICAgICAgIG5leHRbZWRnZUluZGV4XSA9IGhlYWRbdl07CiAgICAgICAgICAgIGhlYWRbdl0gPSBlZGdlSW5kZXgrKzsKCiAgICAgICAgICAgIGRlZ3JlZVt1XSsrOwogICAgICAgICAgICBkZWdyZWVbdl0rKzsKICAgICAgICB9CgogICAgICAgIGJvb2xlYW5bXSB2aXNpdGVkID0gbmV3IGJvb2xlYW5bbiArIDFdOwogICAgICAgIGludFtdIHN0YWNrID0gbmV3IGludFtuXTsKICAgICAgICBpbnQgYW5zd2VyID0gMDsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIGlmICh2aXNpdGVkW2ldKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaW50IHRvcCA9IDA7CiAgICAgICAgICAgIHN0YWNrW3RvcCsrXSA9IGk7CiAgICAgICAgICAgIHZpc2l0ZWRbaV0gPSB0cnVlOwoKICAgICAgICAgICAgYm9vbGVhbiBpc0N5Y2xlID0gdHJ1ZTsKCiAgICAgICAgICAgIHdoaWxlICh0b3AgPiAwKSB7CiAgICAgICAgICAgICAgICBpbnQgdSA9IHN0YWNrWy0tdG9wXTsKCiAgICAgICAgICAgICAgICBpZiAoZGVncmVlW3VdICE9IDIpIHsKICAgICAgICAgICAgICAgICAgICBpc0N5Y2xlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yIChpbnQgZSA9IGhlYWRbdV07IGUgIT0gLTE7IGUgPSBuZXh0W2VdKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IHYgPSB0b1tlXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aXNpdGVkW3ZdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbdl0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBzdGFja1t0b3ArK10gPSB2OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzQ3ljbGUpIHsKICAgICAgICAgICAgICAgIGFuc3dlcisrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYW5zd2VyKTsKICAgIH0KfQo=