#include <cstdio>
#include <cstdlib>
#include <vector>
#include <iostream>
#include <string>
#include <queue>
#include <cstring>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;
const int maxv = 500;
struct Edge {
int from, to, cap, flow;
Edge(int u, int v, int o, int r) : from(u), to(v), cap(o), flow(r) { }
};
struct EK {
int n, m;
vector<Edge> edge1;
vector<Edge> edge2;
vector<int> G1[maxv];
vector<int> G2[maxv];
int a[maxv];
int p[maxv];
void initt() {
edge2.clear();
for(int i = 0; i < maxv; i++) G2[i].clear();
}
void init() {
edge1 = edge2;
for(int i = 0; i < maxv; i++) G1[i] = G2[i];
}
void begin() {
for(int i = 0; i < n; i++) {
if(!i){
edge2.push_back(Edge(2*i, 2*i+1, inf, 0));
edge2.push_back(Edge(2*i+1, 2*i, 0, 0));
}
else{
edge2.push_back(Edge(2*i, 2*i+1, 1, 0));
edge2.push_back(Edge(2*i+1, 2*i, 0, 0));
}
m = edge2.size();
G2[2*i].push_back(m-2);
G2[2*i+1].push_back(m-1);
}
}
void addedge(int from, int to, int cap) {
edge2.push_back(Edge(from*2+1, to*2, cap, 0));
edge2.push_back(Edge(to*2, from*2+1, 0, 0));
m = edge2.size();
G2[from*2+1].push_back(m-2);
G2[to*2].push_back(m-1);
}
int maxflow(int s, int t) {
int flow = 0;
for(; ;) {
memset(a, 0, sizeof(a));
queue<int> Q;
Q.push(s);
a[s] = inf;
while(!Q.empty()) {
int x = Q.front();
Q.pop();
for(int i = 0; i < G1[x].size(); i++) {
Edge& e = edge1[G1[x][i]];
if(!a[e.to] && e.cap > e.flow) {
p[e.to] = G1[x][i];
a[e.to] = min(a[x], e.cap - e.flow);
Q.push(e.to);
}
}
if(a[t]) break;
}
if(!a[t]) break;
for(int u = t; u != s; u = edge1[p[u]].from) {
edge1[p[u]].flow += a[t];
edge1[p[u]^1].flow -= a[t];
}
flow += a[t];
}
return flow;
}
};
int main(){
//freopen("ztest.txt","r",stdin);
int n, m;
while(scanf("%d%d", &n, &m) == 2) {
EK ek;
ek.n = n;
ek.m = m;
int ans = inf;
ek.initt();
ek.begin();
int u, v;
char ch1, ch2, ch3;
for(int i = 0; i < m; i++) {
cin >> ch1 >> u >> ch2 >> v >> ch3;
//printf("%c %d %c %d %c", ch1, u, ch2, v, ch3);
ek.addedge(u, v, inf);
ek.addedge(v, u, inf);
}
for(int i = 1; i < n; i++) {
ek.init();
ek.edge1[i*2].cap = inf;
int temp = ek.maxflow(0, i*2+1);
ans = min(ans, temp);
}
if(ans == inf) ans = n;
printf("%d\n", ans);
}
return 0;
}