rt
#include<bits/stdc++.h>
using namespace std;
int n;
int hd[10001],cnt;
struct EDGE {
int nxt,v;
} e[10001];
void AE(int u,int v) {
e[++cnt].v=v;
e[cnt].nxt=hd[u];
hd[u]=cnt;
}
long int f[10001][3];
void dfs(int u,int fa) {
f[u][0]=1,f[u][1]=0,f[u][2]=0x3f3f3f3f;
for(int j=hd[u]; j; j=e[j].nxt) {
if(fa==e[j].v)continue;
dfs(e[j].v,u);
f[u][0]+=min(f[e[j].v][0],f[e[j].v][1]);
f[u][1]+=f[e[j].v][2];
}
for(int j=hd[u]; j; j=e[j].nxt) {
if(fa==e[j].v)continue;
f[u][2]=min(f[u][2],f[u][1]+f[e[j].v][0]-f[e[j].v][2]);
}
}
int main() {
while(1) {
scanf("%d",&n);
if(n==-1)exit(0);
memset(hd,0,sizeof(hd));
cnt=0;
for(int i=1; i<n; i++) {
int u,v;
scanf("%d%d",&u,&v);
AE(u,v);
AE(v,u);
}
dfs(n,0);
printf("%ld\n",min(f[n][0],f[n][2]));
}
}