diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e7d5bdd955eab945997f2825fc7913e6c9374e11
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.nfs*
diff --git a/20230113/1/1.txt b/20230113/1/1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..90b451628d8449f4c47e627eb1392672e5ccec98
--- /dev/null
+++ b/20230113/1/1.txt
@@ -0,0 +1 @@
+aaaaaa
diff --git a/20230113/1/2.txt b/20230113/1/2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..68fc125aeeff664ca06aed559dd6542c0dcc6bc6
--- /dev/null
+++ b/20230113/1/2.txt
@@ -0,0 +1 @@
+aaabca
diff --git a/20230113/1/main.c b/20230113/1/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..fc7303775cb3b771a6a8483a7c0a0d07b0e3a727
--- /dev/null
+++ b/20230113/1/main.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+
+#include <errno.h>
+#include <string.h>
+#define err(s) fprintf(stderr, s "%s\n", strerror(errno))
+
+#define F1_STR "1.txt"
+#define F2_STR "2.txt"
+
+int main(void) {
+    int ret = 0;
+    FILE *f1;
+    if ((f1 = fopen(F1_STR, "r"))) {
+
+        FILE *f2;
+        if ((f2 = fopen(F2_STR, "r"))) {
+
+            char c1;
+            char c2;
+            int diff = 0;
+            while (fscanf(f1, "%c", &c1) != EOF &&
+                   fscanf(f2, "%c", &c2) != EOF &&
+                   !diff) {
+                if (c1 != c2) {
+                    diff = 1;
+                    printf("file 1: %c, file2: %c\n", c1, c2);
+                }
+            }
+            
+            fclose(f2);
+
+        } else {
+            ret = 1;
+            err(F2_STR ": ");
+        }
+
+        fclose(f1);
+    } else {
+        ret = 1;
+        err(F1_STR ": ");
+    }
+
+    return ret;
+}
diff --git a/20230113/2/1.txt b/20230113/2/1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f3a7a66398e88244f929c4b421a63b25209cab60
--- /dev/null
+++ b/20230113/2/1.txt
@@ -0,0 +1 @@
+abcdefghijk
diff --git a/20230113/2/2.txt b/20230113/2/2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a4054fd0fbc4649a846e8a4324a78305daeaee19
--- /dev/null
+++ b/20230113/2/2.txt
@@ -0,0 +1 @@
+abbdefgjklk
diff --git a/20230113/2/main.c b/20230113/2/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..1793be9527b28b804e9296195ea2a70e7c1bc296
--- /dev/null
+++ b/20230113/2/main.c
@@ -0,0 +1,49 @@
+#include <stdio.h>
+
+#include <errno.h>
+#include <string.h>
+#define err(s) fprintf(stderr, s "%s\n", strerror(errno))
+
+#define F1_STR "1.txt"
+#define F2_STR "2.txt"
+#define FOUT_STR "out.txt"
+
+int main(void) {
+    int ret = 0;
+    FILE *f1;
+    if ((f1 = fopen(F1_STR, "r"))) {
+
+        FILE *f2;
+        if ((f2 = fopen(F2_STR, "r"))) {
+
+            FILE *fout;
+            if ((fout = fopen(FOUT_STR, "w"))) {
+
+                char c1;
+                char c2;
+                while (fscanf(f1, "%c", &c1) != EOF &&
+                       fscanf(f2, "%c", &c2) != EOF) {
+                    if (c1 != c2) {
+                        printf("file 1: %c, file2: %c\n", c1, c2);
+                        fprintf(fout, "%c%c\n", c1, c2);
+                    }
+                }
+                fclose(fout);
+
+            } else {
+                ret = 1;
+                err(FOUT_STR ": ");
+            }
+            fclose(f2);
+        } else {
+            ret = 1;
+            err(F2_STR ": ");
+        }
+        fclose(f1);
+    } else {
+        ret = 1;
+        err(F1_STR ": ");
+    }
+
+    return ret;
+}
diff --git a/20230113/2/out.txt b/20230113/2/out.txt
new file mode 100644
index 0000000000000000000000000000000000000000..18f51a2ffd46d8df73ceee74f44fc9e2d5ac6909
--- /dev/null
+++ b/20230113/2/out.txt
@@ -0,0 +1,4 @@
+cb
+hj
+ik
+jl
diff --git a/20230113/3/1.txt b/20230113/3/1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0f66b12d63b2f7063b2017b6d19fc88952c1dd7c
--- /dev/null
+++ b/20230113/3/1.txt
@@ -0,0 +1 @@
+aaa bbb ccc ddd eee
diff --git a/20230113/3/2.txt b/20230113/3/2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..aec1b311dd689a1b1a004b3a4ddefeca08941699
--- /dev/null
+++ b/20230113/3/2.txt
@@ -0,0 +1 @@
+aaa b ccc dd eeee
diff --git a/20230113/3/main.c b/20230113/3/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..bf8d20cca66a40546396d46c574018643e6ef2a2
--- /dev/null
+++ b/20230113/3/main.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+
+#include <errno.h>
+#include <string.h>
+#define err(s) fprintf(stderr, s "%s\n", strerror(errno))
+
+#define F1_STR "1.txt"
+#define F2_STR "2.txt"
+
+int main(void) {
+    int ret = 0;
+    FILE *f1;
+    if ((f1 = fopen(F1_STR, "r"))) {
+
+        FILE *f2;
+        if ((f2 = fopen(F2_STR, "r"))) {
+
+            char s1[128];
+            char s2[128];
+            while (fscanf(f1, "%s", s1) != EOF &&
+                   fscanf(f2, "%s", s2) != EOF) {
+                if (strcmp(s1, s2) != 0) {
+                    puts(s2);
+                }
+            }
+
+            fclose(f2);
+        } else {
+            ret = 1;
+            err(F2_STR ": ");
+        }
+        fclose(f1);
+    } else {
+        ret = 1;
+        err(F1_STR ": ");
+    }
+
+    return ret;
+}